是否可以在代码中获取编译器的版本?例如使用一些编译器指令?
我试图找到编译器的版本然后让我们说Gcc
或Visual C++
的版本是否C++11
兼容然后编译这段代码,如果没有它编译那个片段而是
答案 0 :(得分:2)
您可以使用__cplusplus
宏来检查编译器是否支持C ++ 11,以便它甚至可以在您不了解的编译器上运行。
#if __cplusplus >= 201103L
//C++ 11 code here
#endif
1以下宏名称应由__cplusplus定义 在编译C ++转换单元时,名称__cplusplus被定义为值201103L。
157)本标准的未来版本旨在用更大的值替换此宏的值。不合格的编译器应使用最多五位小数的值。
答案 1 :(得分:1)
在gcc和clang中,您可以使用__VERSION__
宏。
答案 2 :(得分:1)
如果你想知道你正在使用什么编译器,他们有自己的预定义宏,在其他注释中链接。但是,为了发现C ++ 11支持的存在,您表明您正在这样做。在这种情况下,正确的代码是
#if __cplusplus <= 199711L
//No C++11 support
#else
//Congratulations, C++11 support!
#endif
根据标准,编译器需要设置该变量,并指示版本。在Bjarne's page
上查看