有没有一种方法可以在代码中计算出编译器的版本

Is there a way to figure out the version of a compiler in code?

本文关键字:计算 代码 编译器 版本 一种 方法 有没有      更新时间:2023-10-16

是否可以在代码中获得编译器的版本?例如使用一些编译器指令
我正在尝试查找编译器的版本,然后假设GccVisual C++的版本是否符合C++11,则编译这段代码,如果不符合,则编译该代码段,而不是

您可以使用__cplusplus宏检查编译器是否支持C++11,以便它即使在您不了解的编译器上也能工作。

#if __cplusplus >= 201103L
//C++ 11 code here
#endif

16.8预定义的宏名称

1下列宏名称应由__cplusplus定义编译C++翻译单元时,名称__cplusplus被定义为值201103L。

157)本标准的未来版本将用更大的值替换此宏的值。不合格的编译器应使用最多包含五位小数的值。

在gcc和clang中,可以使用__VERSION__宏。

如果你想知道你使用的是什么编译器,他们有自己预定义的宏,链接在其他注释中。但您表示这样做是为了发现C++11支持的存在。在这种情况下,正确的代码是

#if __cplusplus <= 199711L
    //No C++11 support
#else
    //Congratulations, C++11 support!
#endif

根据该标准,编译器需要设置该变量,它指示版本。在Bjarne的页面上查看