是否可以在代码中获取编译器的版本?例如使用一些编译器指令?
我正在尝试查找编译器的版本,然后让我们说 or 的版本Gcc
是否Visual C++
兼容C++11
,然后编译这段代码,如果不编译,则改为编译该代码段
问问题
124 次
3 回答
2
您可以使用__cplusplus
宏来检查编译器是否支持 C++11,以便它甚至可以在您不了解的编译器上工作。
#if __cplusplus >= 201103L
//C++ 11 code here
#endif
16.8 预定义的宏名称
1 下列宏名称应由__cplusplus 定义。名称__cplusplus 在编译C++ 翻译单元时定义为值201103L。
157) 本标准的未来版本打算用更大的值替换此宏的值。不符合标准的编译器应使用最多五个十进制数字的值。
于 2013-07-25T10:52:03.080 回答
1
在 gcc 和 clang 中,您可以使用__VERSION__
宏。
于 2013-07-25T10:53:19.663 回答
1
如果你想知道你正在使用什么编译器,他们有自己的预定义宏,链接在其他注释中。但是您表明您这样做是为了发现 C++11 支持的存在。在这种情况下,正确的代码是
#if __cplusplus <= 199711L
//No C++11 support
#else
//Congratulations, C++11 support!
#endif
根据标准,编译器需要设置该变量,并指示版本。在Bjarne 的页面上查看
于 2013-07-25T11:08:18.173 回答