我正在编写一些半可移植的代码,希望能够在为iPhone编译时能够检测到。所以我想要像#ifdef IPHONE_SDK...
这样的东西。
想必Xcode定义了一些东西,但我在项目属性下看不到任何东西,Google也帮不了什么忙。
发布于 2008-09-28 23:47:20
它在SDK文档中的“有条件地编译源代码”下。
相关的定义是TARGET_OS_IPHONE (他不推荐使用TARGET_IPHONE_SIMULATOR),它们在iOS框架的/usr/include/TargetConditionals.h中定义。在工具链的早期版本中,您必须编写:
#include "TargetConditionals.h"
但在当前的(xCode 6/iOS8)工具链上,这不再是必需的。
因此,举个例子,如果你想只编译一个代码块,如果你是为设备构建的,那么你应该这样做
#if !(TARGET_OS_SIMULATOR)
...
#endif
发布于 2008-10-06 06:01:21
要查看所有已定义的宏,请将此代码添加到构建配置的"Other C Flags“中:
-g3 -save-temps -dD
您将得到一些构建错误,但编译器会将所有定义转储到项目根目录下的.mi文件中。您可以使用grep查看它们,例如:
grep define main.mi
完成后,不要忘记从构建设置中删除这些选项。
https://stackoverflow.com/questions/146986
复制相似问题