【问题标题】:Objective-C++ and .cpp files in XcodeXcode 中的 Objective-C++ 和 .cpp 文件
【发布时间】:2010-09-13 07:18:18
【问题描述】:

我正在尝试制作一个简单的 Objective-C++ 应用程序。我所有的代码都编译得很好,包括在 Objective-C 类中使用 C++,直到我尝试添加一个 C++ 类。我创建了一个简单的 C++ 类:

测试.h

class Test {

};

并将此文件包含在一个 Objective-C 类中(扩展名为 .mm),我得到以下构建错误:

error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Test'

显然我在这里遗漏了一些简单的概念。我会很感激一些启发。

【问题讨论】:

    标签: c++ xcode class objective-c++


    【解决方案1】:

    helixed 的回答无济于事,如果 __cplusplus 未定义,您的课程将被预处理器跳过。

    在您尝试从 *.m 文件中包含 C++ 类的大多数情况下,请尝试将其重命名为 *.mm。 这解决了我这边的同样问题。

    【讨论】:

      【解决方案2】:

      所需的预处理器命令不应该是:

      #ifdef __cplusplus
      

      【讨论】:

        【解决方案3】:

        好吧,在更仔细地扫描Apple's Documentation 之后,它看起来像是在头文件中使用__cplusplus 预处理器标志的答案。现在的代码如下所示:

        #ifdef __cplusplus
        
        class Test {
        
        };
        
        #endif
        

        【讨论】:

          【解决方案4】:

          在 Xcode 6 中有以下选项:

          Apple LLVM 6.0 - Language -> Compile Sources As
          

          您可以将其设置为 Objective-C++,然后文件扩展名无关紧要。如果您正在跨平台工作并且需要使用其他文件扩展名,这将特别有用。

          【讨论】:

          • 差不多五年后,这很有帮助!它让我知道要寻找什么设置,即使在更高版本的 xCode 上也是如此。正如您所说,在开发跨平台本机代码应用程序时,我并不期待必须将所有 .cpp 文件重命名为 .mm!非常感谢!
          猜你喜欢
          • 1970-01-01
          • 2011-11-12
          • 1970-01-01
          • 2013-03-28
          • 2013-01-24
          • 1970-01-01
          • 1970-01-01
          • 2013-07-14
          • 1970-01-01
          相关资源
          最近更新 更多