C預處理器條件應該用於OS X特定代碼?如果我正在爲OS X編譯,或者如果我正在編譯Linux,則需要包含特定的庫。什麼C預處理器條件應該用於OS X特定代碼?
我知道有__APPLE__
但我不知道這是否是OS X 10.x的當前條件。
C預處理器條件應該用於OS X特定代碼?如果我正在爲OS X編譯,或者如果我正在編譯Linux,則需要包含特定的庫。什麼C預處理器條件應該用於OS X特定代碼?
我知道有__APPLE__
但我不知道這是否是OS X 10.x的當前條件。
This list of operating system macros說的存在兩種__APPLE__
和__MACH__
表示OSX。
也在the source for fdisk
的部分第18行確認。
如果我沒有記錯,這是__APPLE__
:)
我相信這是爲MAC和iOS。 – 2013-11-19 10:05:43
__APPLE__
會告訴你你正在Apple平臺上編譯。除非您需要在OS X之前支持MacOS版本,否則應該足夠好。或者,你可以使用__APPLE__
和__MACH__
,以確保您正在編譯在OS X
此代碼示例可以幫助你 -
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
This page包含所有操作系統預定義宏的列表。
對於mac OSX,需要定義__APPLE__
& & __MACH__
。
不知道爲什麼這被拒絕。這似乎是正確的。 – 2009-10-07 01:28:18