在項目中添加了一個.c文件通铲,引起大量錯誤。描述為:Unknown type name "NSString"
問題如下圖所示:
此問題出現(xiàn)的原因是工程中添加了.c 文件如:
并且器贩,在.pch預(yù)編譯頭文件內(nèi)沒有添加__OBJC__的預(yù)編譯條件颅夺。
解決辦法:在預(yù)編譯頭文件內(nèi),對oc相關(guān)的頭文件作如下操作:
分析:
此問題在無.pch預(yù)編譯頭文件的工程中不會出現(xiàn)蛹稍。
如果有預(yù)編譯頭文件吧黄,那么添加了.c文件后,就會出現(xiàn)編譯錯誤稳摄。
pch里面自加的頭文件是全局性的稚字,當(dāng)在C文件import時其實是沒有意義的,這也就是問題出處厦酬,所以要ObjC區(qū)分開編譯胆描。
另外,對于此問題仗阅,還有另外三種解決方案:
解決方案一:選擇所有.c文件昌讲,將屬性的 identity and type 改為Objective-C Source。
解決方案二:選擇所有.c文件减噪,將.c修改為.m
解決方案三:將Compile Sources As 改為 Objective-C++短绸,由于修改所有文件的編譯類型,可能會導(dǎo)致其他包括c筹裕、c++代碼的提示錯誤醋闭,不過都是些的提示異常,按提示修改即可朝卒。