写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码。而跨平台c/c++编程,GCC基本在各平台都可以使用。整理了一份各平台预编译宏的判断示例。
需要注意几点:
- windows32/64平台
_WIN32
都会被定义,而_WIN64
只在64位windows上定义,因此要先判断_WIN64
- 所有的apple系统都会定义
__APPLE__
,包括MacOSX和iOS TARGET_IPHONE_SIMULATOR
是TARGET_OS_IPHONE
的子集,
TARGET_OS_IPHONE
是TARGET_OS_MAC
的子集。也就是说iOS模拟器上会同时定义这三个宏。因此判断的时候要先判断子集。- 另外mac上可以用以下命令行获取GCC定义的预编译宏:
gcc -arch i386 -dM -E - < /dev/null | sort
(i386可替换为arm64等)
#ifdef _WIN32
//define something for Windows (32-bit and 64-bit, this part is common)
#