【问题标题】:Importing complex.h header file in Xcode .c header file produces compilation errors在 Xcode .c 头文件中导入 complex.h 头文件会产生编译错误
【发布时间】:2012-05-08 22:17:10
【问题描述】:

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

NSObjRuntime.h

解析问题 预期标识符或 '('

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

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

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

【问题讨论】:

    标签: objective-c c xcode


    【解决方案1】:

    在我看来,错误来自 .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__) 来逃避。

    【讨论】:

    • 这个;问题不包括complex.h;它在.c 文件中包含NSObjRuntime.h
    • @StephenCanon complex.h 没有 #include NSObjRuntime.h -- 其他的。
    • 那么,我可以导入 complex.h 而不以某种方式拖拽 NSObjRuntime.h 吗?
    • @ChristianJ.B.:当然。 #include &lt;complex.h&gt; 在你的 C 文件中。我怀疑贾斯汀是对的,您有一个前缀标头正在拉入其他内容。
    • @StephenCanon 好的 - 感谢您的澄清。我还澄清了答案中的一些内容
    猜你喜欢
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2010-10-17
    • 1970-01-01
    相关资源
    最近更新 更多