c++ - __OBJC__ 等效于 Objective-C++

标签 c++ iphone objective-c

我正在为 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/

相关文章:

iphone - 为什么这个简单的设置包没有读取任何东西?

iOS - 在表读取完成之前调用的下一个方法

c++ - 什么时候多重继承可能是唯一合理的解决方案?

c++ - 使用 void *pointer to object 的安全性

iphone - NSOperation 在后台完成,尝试通知主线程, View 不再存在。碰撞

ios - 如何从控制中心 - 音乐中删除应用程序名称?

c++ - 过载分辨率 : What is the role of explicit and the initialization syntax?

c++ - mktime 仅处理 Clang 上的闰年?

ios - 超高优先级后台工作或 QUARTZ 精度

ios - 禁用 ScrollView 垂直滚动