我正在尝试制作一个简单的Objective-C ++应用程序。我的所有代码都编译得很好,包括在Objective-C类中使用C ++,直到我尝试添加一个C ++类。我创建了一个简单的C ++类:
Test.h
class Test {
};
并将此文件包含在Objective-C类(扩展名为.mm)中,并且出现以下构建错误:
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Test'
显然,我在这里错过了一些简单的概念。我很欣赏一些启发。
答案 0 :(得分:2)
好吧,在Apple's Documentation上更仔细地扫描后,看起来是在头文件中使用__cplusplus
预处理程序标志的答案。以下是代码现在的样子:
#ifdef __cplusplus
class Test {
};
#endif
答案 1 :(得分:2)
helixed的答案无济于事,如果__cplusplus未定义,您的课程将被预处理器遮挡。
最重要的是你试图从* .m文件中包含C ++类,尝试将其重命名为* .mm。 这解决了我身上的同样问题。
答案 2 :(得分:2)
预处理器命令不应该是:
#ifdef __cplusplus
答案 3 :(得分:0)
在Xcode 6中有以下选项:
Apple LLVM 6.0 - Language -> Compile Sources As
您可以将其设置为Objective-C ++,然后文件扩展名无关紧要。如果您正在跨平台工作并且需要使用其他文件扩展名,这将非常有用。