在阅读各种 C 和 C++ 源代码时,我遇到了两个宏 __APPLE__
和 __OSX__
。我发现在各种代码中大量使用了 __OSX__
,尤其是那些源自 *BSD
系统的代码。
但是,有时我发现仅测试 __OSX__
是不够的,我必须使用 __APPLE__
宏完成测试。
Porting Command Line Unix Tools to Mac OS X 指南指定 __APPLE__
和另外 __APPLE_CC__
但 没有 提到 __OSX__
。
来自 GCC 的移植 指南说:
- 使用
#ifdef __GNUC__
包装任何 GCC 特定的代码。- 使用
#ifdef __APPLE_CC__
包装任何 Mac OS X 特定的代码。
同样,没有提及 __OSX__
宏。
Mac OS X 平台和 XCode 开发环境中预定义的宏应该用于区分 C/C++ 程序中的 OSX 特定代码?
__OSX__
宏定义在哪里?是 *BSD
特定宏吗?
原文由 mloskot 发布,翻译遵循 CC BY-SA 4.0 许可协议
这一切都取决于。
每个宏都指定了不同的含义。
请参阅: https ://developer.apple.com/library/mac/documentation/Porting/Conceptual/PortingUnix/compiling/compiling.html#//apple_ref/doc/uid/TP40002850-SW13
因此,鉴于上述定义,我将使用
__APPLE__
来区分苹果特定的代码。