我应该为OS X特定代码使用什么C预处理器条件?

我应该为OS X特定代码使用什么C预处理器条件? 如果我正在编译OS X,我需要包含一个特定的库,如果我正在编译Linux,我需要包含一个不同的头。

我知道有__APPLE__但我不知道这是否是OS X 10.x的当前条件。

此操作系统宏列表表明__MACH____MACH__的存在表示OSX。

还在第18行确认了fdisk的部分源代码 。

__APPLE__会告诉您正在Apple平台上进行编译。 除非您需要在OS X之前支持MacOS版本,否则这应该足够了。 或者,您可以使用__MACH____MACH__来确保在OS X上进行编译。

如果我没记错的话,那就是__APPLE__ 🙂

这段代码示例可以帮助您 –

 if defined(__APPLE__) #include "TargetConditionals.h" if (!defined(TARGET_OS_IPHONE) && !defined(TARGET_IPHONE_SIMULATOR)) { //write your OSX specific code here } 

旧式原料:

 #ifdef WIN32 // windows. #elif __APPLE__ // osx and ios. #endif 

此页面包含所有OS预定义宏的列表。

对于mac OSX,需要定义__MACH__ && __MACH__