【发布时间】:2015-03-04 17:35:12
【问题描述】:
我正在处理一些跨平台的预处理宏。对于微软,我阅读了the following should be used:
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
# SOME_SETTING_FOR_MY_PROJECT
#endif
以上要点是在使用值之前对WINAPI_FAMILY 进行了显式测试。 (我很确定未定义的宏的计算结果为 0)。
对于 Apple,一些samples on their website use:
#if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
# SOME_SETTING_FOR_MY_PROJECT
#endif
上面的一点是苹果的样本没有使用#if defined(TARGET_OS_IPHONE) && (TARGET_OS_IPHONE != 0)。
一个比另一个更便携吗?
是否有实际理由使用其中一种与另一种?还是风格问题?
注意:我对将 some 定义为 0 而不是让它未定义的风格并不感兴趣。不过,如果它具有实际意义,那么我会对洞察力感兴趣。
【问题讨论】:
标签: preprocessor c-preprocessor preprocessor-directive