编译器内置宏

C 标准

__LINE__

此宏所处的源代码行号. 在同一个文件中, 在不同行中, 值有所不同.

__FILE__

源代码文件名.

__DATE__

编译日期.

__TIME__

编译时间.

__STDC__

当编译器被要求完全遵守 C 标准, 禁用编译器扩展时, 此值设为 1, 否则为 0.

__cpludplud

当编译代码为 C++ 时, 此宏被定义.

__func__

当前所处的函数名.

C99 标准

GCC

只想要简单查看可以使用命令 gcc -dM -E - < /dev/null. (其实就是传入空源文件, 查看预处理结果).

或者阅读文档 https://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html

Clang

GCC 类似, clang -dM -E - < /dev/null.

确定编译器版本

https://sourceforge.net/p/predef/wiki/Compilers/ 总结了各个编译器预定义的与自身版本相关的宏.

确定操作系统

对应的操作系统会定义对应的宏.

__linux__
_WIN32      // Windows 系统 32 位或 64 位 程序
_WIN64      // 特指 Windows 系统 64 位 程序
__APPLE__