GCC / G ++macros区分Linux和Mac OSX的macros?
GCC / G ++macros区分Linux和Mac OSX的macros?
下一次您想在平台上查看GCC支持的预定义macros时,请运行标记为-dM
的预处理器。 它会列出系统中所有可用的预定义macros。 例如:
$ touch dummy.hxx $ cpp -dM ./dummy.hxx #define __DBL_MIN_EXP__ (-1021) #define __FLT_MIN__ 1.17549435e-38F #define __CHAR_BIT__ 8 #define __WCHAR_MAX__ 2147483647 #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 #define __FLT_EVAL_METHOD__ 0 #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINTMAX_TYPE__ long unsigned int #define __linux 1 #define __unix 1 #define __linux__ 1 ...
我更倾向于testingfunction的可用性比平台名称。 尝试使用autoconf 。
否则,这是一个全面的平台定义列表 。
也可以查看这个页面 ,了解关于编译器,库,体系结构和设备的定义。
如果必须,用__APPLE__
macros检测OSX。 如果可以的话,最好使用configure
来检测function,但不是所有的方法都能正常工作。
我使用__MACH__
来testingMac OS __MACH__
Mac OS X来说不是100%独特的(可能还有一些旧的NeXT盒子!),但足以说明Mac和Linux之间的区别。