对于Objective C / C ++,是否存在类似__APPLE__的定义

时间:2014-07-31 14:28:25

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

我有一个小的C ++帮助文件,它有一些std :: strings的支持函数。当我在“.cpp”文件和“.mm”文件中使用它时,我想添加一些Objective C ++帮助器函数。现在我搜索一个类似的定义:

#ifdef __APPLE__
#ifdef __I_AM_INCLUDED_IN_A_MM_FILE__
// define some Objective C++ code here
#endif
#endif

有定义吗?是否有XCode定义列表?

1 个答案:

答案 0 :(得分:4)

编译.mm文件时定义了

__OBJC____OBJC2__

为了将来参考,您可以按如下方式测试:

$ clang -dM -E foo.mm > mm.txt
$ clang -dM -E foo.cpp > cpp.txt
$ sdiff -s mm.txt cpp.txt
#define IBAction void)__attribute__((ibaction)                <
#define IBOutlet __attribute__((iboutlet))                    <
#define IBOutletCollection(ClassName) __attribute__((iboutlet <
#define OBJC_ZEROCOST_EXCEPTIONS 1                            <
#define __NEXT_RUNTIME__ 1                                    <
#define __OBJC2__ 1                                           <
#define __OBJC__ 1                                            <

(请注意,foo.mm和foo.cpp只是空文件)