我正在为 iPhone 应用程序编译 .mm 文件 (Objective-C++),但预编译的 header 无法包含基类。
我追踪到以下内容:
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif
事实证明,__OBJC__
对于 mm 文件是未定义的,而它是为标准 m 文件定义的。
我可以使用其他标志吗?
最佳答案
如果您使用 -dM -E
调用 gcc,它将在预处理后停止,并列出所有 #defines
。这通常是我检查内置定义的方式;但是我只是用测试 .mm
文件尝试了这个,__OBJC__
是为我定义的,所以我不确定为什么它没有为你定义。
$ echo "int foo() {};" > tmp.mm
$ gcc -dM -E tmp.mm|grep OBJ
#define __OBJC__ 1
#define OBJC_NEW_PROPERTIES 1
关于c++ - __OBJC__ 等效于 Objective-C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1144990/