C语言标准规定了不同版本的代号,但编译器自身的版本和C标准版本不是一个概念,C标准也不会为编译器规定版本号,这是厂商决定的。虽然通过命令行--version选项或者cl /?可以获取版本号,这不能在代码中判断,如下介绍一些编译器定义的版本宏。
- MSVC
_MSC_VER宏 - GCC/MinGW/Cygwin
__GNUC__
: 主版本号。__GNUC_MINOR__
: 次版本号。__GNUC_PATCHLEVEL__
: 补丁级别。 - clang
__clang_major__
: 主版本号。__clang_minor__
: 次版本号。__clang_patchlevel__
: 补丁级别。
CMake中可利用CMAKE_CXX_COMPILER_VERSION变量获取编译器版本。