内置预处理器令牌来检测iPhone平台

时间:2009-07-05 06:07:14

标签: iphone preprocessor

是否有一个预处理器令牌可用于在构建时检测任何iPhone设备或模拟器?我目前正在使用:

#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
    // This is an iPhone build
#endif

这是推荐的方法还是有更好的方法?我更喜欢内置的宏,即由编译器定义,而不是我必须包含的SDK头文件。

我现在并不关心区分iPhone OS版本,但是如果有一个Apple文档页面详细说明了所有相关的宏,当它们被定义和未定义时,我会很感激它的链接作为我的到目前为止,搜索工作已经缩短。

谢谢!

3 个答案:

答案 0 :(得分:13)

this site我们发现您需要TARGET_OS_IPHONE

#if TARGET_OS_IPHONE
//Do iPhone stuff
#else
//Do Mac stuff
#endif

答案 1 :(得分:8)

您要查找的文件是TargetConditionals.h,它定义了您感兴趣的所有宏。您可以在每个版本的SDK中找到它,例如2.2 SDK的以下路径:< / p>

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/usr/include/TargetConditionals.h

答案 2 :(得分:2)

如果您的代码在iPhone和桌面上运行,则可以使用TARGET_OS_IPHONE来确定目标操作系统是否是任何版本的iPhone OS。还有TARGET_IPHONE_SIMULATOR,仅在为模拟器构建应用程序时定义。它们仍然在头文件中定义,但我希望有帮助!