在C和C++语言及编译器中,有一些内置的预定义宏,它们可以用于条件编译、获取编译器和平台信息等。

C/C++语言内置宏定义:
__FILE__:表示当前源文件名。
__LINE__:表示当前源文件中的行号。
__DATE__:表示文件被编译的日期,格式为”MM dd yyyy”。
__TIME__:表示文件被编译的时间,格式为”hh:mm:ss”。
__cplusplus:用于判断是否为C++编译环境。
__STDC__:用于判断是否符合特定C标准(如C90、C99等)。

GCC编译器内置宏定义:
__GNUC__:表示GCC编译器的主版本号。
__GNUC_MINOR__:表示GCC编译器的副版本号。
__GNUC_PATCHLEVEL__:表示GCC编译器的补丁级别。
__linux__:表示当前操作系统为Linux。
__APPLE__:表示当前操作系统为macOS。
__MINGW32____MINGW64__:表示当前使用MinGW编译器。
__CYGWIN__:表示当前操作系统为Cygwin环境。
__unix__:表示当前操作系统为类Unix系统。
__x86_64__:表示当前编译环境为x86_64架构。
__i386____i686__:表示当前编译环境为x86架构。

MSVC(Microsoft Visual C++)编译器内置宏定义:
_MSC_VER:表示MSVC编译器的版本号。
_WIN32:表示当前编译环境是Windows 32/64 位。
_WIN64:表示当前编译环境是Windows 64 位。
_M_X64:表示当前编译环境是x64(64 位)。
_M_IX86:表示当前编译环境是x86(32 位)。
_DEBUG:在Debug模式下定义,用于调试。
_MT:多线程编译选项。
_DLL:用于标识当前编译的是 DLL。