3

我有一个项目包含目标 c 和 c 文件的混合。在其中一个 c 头文件中,我尝试导入 complex.h。Xcode 生成连接到 NSObjRuntime.h 的 13 个编译错误:

NSObjRuntime.h

解析问题预期的标识符或“(”

解析问题未知类型名称'NSString'...

NSZone.h 会产生更多的编译错误。

在我看来,错误来自 .c 文件中无法识别的 Objective C 代码。我应该将我的 c 文件转换为目标 c 以导入 complex.h 还是有更优雅的解决方案?

4

1 回答 1

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__).

于 2012-05-08T22:25:07.860 回答