【发布时间】:2010-12-04 11:34:26
【问题描述】:
对于 OS X 特定代码,我应该使用什么 C 预处理器条件?如果我为 OS X 编译,我需要包含一个特定的库;如果我为 Linux 编译,我需要包含一个不同的头文件。
我知道有 __APPLE__,但我不知道这是否是 OS X 10.x 的当前条件。
【问题讨论】:
标签: c macos c-preprocessor conditional-compilation
对于 OS X 特定代码,我应该使用什么 C 预处理器条件?如果我为 OS X 编译,我需要包含一个特定的库;如果我为 Linux 编译,我需要包含一个不同的头文件。
我知道有 __APPLE__,但我不知道这是否是 OS X 10.x 的当前条件。
【问题讨论】:
标签: c macos c-preprocessor conditional-compilation
This page 包含所有操作系统预定义宏的列表。
对于 mac OSX,__APPLE__ && __MACH__ 都需要定义。
【讨论】:
旧式原始:
#ifdef WIN32
// windows.
#elif __APPLE__
// osx and ios.
#endif
【讨论】:
此代码示例可能对您有所帮助 -
if defined(__APPLE__)
#include "TargetConditionals.h"
if (!defined(TARGET_OS_IPHONE) && !defined(TARGET_IPHONE_SIMULATOR))
{
//write your OSX specific code here
}
【讨论】:
__APPLE__ 会告诉您您正在 Apple 平台上进行编译。除非您需要支持 OS X 之前的 MacOS 版本,否则应该已经足够了。或者,您可以使用 __APPLE__ 和 __MACH__ 来确保您在 OS X 上进行编译。
【讨论】:
This list of operating system macros 表示存在 __APPLE__ 和 __MACH__ 表示 OSX。
也在the source for fdisk的部分第18行确认。
【讨论】:
如果我没记错的话,是__APPLE__ :)
【讨论】: