目前现代c++的主要标准有c++11/14/17/20/23,我经常使用Debian/Ubuntu的不同版本,有时候想知道当前g++默认c++标准。本文就是记录下查看标准的两种方法。
第一种方法
通过编译器预定义宏(Predefined_macros) __cplusplus ,来判断c++标准版本。命令如下:
1 | $ g++ -dM -E -x c++ /dev/null | grep -F __cplusplus |
使用上述命令,输出如下:
c++和__cplusplus值对应关系:
更多信息请参考:https://en.cppreference.com/w/cpp/preprocessor/replace#Predefined_macros
据此判断当前g++对应c++17标准。
第二种方法
通过g++帮助信息页中对-std选项的描述,来查看g++支持的c++标准和默认标准。命令如下:
1 | $ man g++ |
在输出页下拉知道-std选项处,我们可以看到如下信息:
然后找到对c++标准的描述:
默认标准处有句提示:This is the default for C++ code. ,据此来判断默认标注为c++17。