【问题标题】:Is there a define like __APPLE__ for Objective C/C++是否有像 __APPLE__ 用于 Objective C/C++ 的定义
【发布时间】:2014-09-23 13:14:54
【问题描述】:

我有一个小的 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 定义的列表?

【问题讨论】:

  • 正好是#ifdef __APPLE__。而且它与 Xcode 无关——它本质上是由 clang 定义的常量。
  • 没有。 __APPLE__ 在“.cpp”以及“.mm”和“.m”文件中定义。
  • 对不起,你这是什么意思?
  • 我搜索仅在“Objective C”语言文件中设置的定义。所以只在“.mm”文件中,不在“.cpp”文件中。

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


【解决方案1】:

__OBJC____OBJC2__ 在编译 .mm 文件时定义。

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

$ 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 只是空文件)

【讨论】:

  • 是否有 Apple Doc for XCode 进行了描述?
  • 查看最新编辑的经验方法来查找此类信息。
  • 太棒了。准确命中:-)
猜你喜欢
  • 2014-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多