我有一个包含Objective c和c文件混合的项目。在其中一个c头文件中,我试图导入complex.h。 Xcode生成13个连接到NSObjRuntime.h的编译错误:
NSObjRuntime.h
解析问题 预期的标识符或'('
解析问题 未知的类型名称'NSString'...
NSZone.h会产生更多编译错误。
在我看来,错误来自于.c文件中无法识别的Objective C代码。我应该将我的c文件转换为目标c以便导入complex.h还是有更优雅的解决方案?
答案 0 :(得分:3)
在我看来,错误来自于.c文件中无法识别的Objective C代码。
准确。
我应该将我的c文件转换为目标c以便导入complex.h还是有更优雅的解决方案?
在此示例中无需使用objc。因此,没有必要将其编译为objc。 complex.h
不需要或包含objc标头。
您只是在c翻译中不包含objc标题。
如果此包含来自前缀标题,您可以使用:
#if defined(__OBJC__)
#import <Foundation/Foundation.h>
#endif
如果它是通过您包含的其他标头导入的,则必须考虑包含依赖项。有时会有不必要的包含,有时您可以使用#if defined(__OBJC__)
离开。