查看C和C++编译器支持标准
查看C编译器版本(和其他默认宏定义)
Windows:
1 | gcc -E -dM -x c NUL > gccstd.hh |
Linux:
gcc -E -dM -x c /dev/null > gccstd.hh
或
gcc -E -dM - < /dev/null > gccstd.hh
注:gcc无法自动识别NUL和/dev/null类型,因此要加上-x c参数
打开gccstd.hh查找__STDC_VERSION__,其值定义如下:
__STDC_VERSION__ |
标准 |
|---|---|
| 未定义 | C89 / C90 |
| 199901L | C99 |
| 201112L | C11 |
| 201710L | C17 |
| 202000L | C2X |
| 202311L | C23 |
直接显示__STDC_VERSION__
Windows:
1 | > gcc -E -dM -x c NUL | findstr /I /c:"__STDC_VERSION__" |
Linux:
gcc -E -dM -x c /dev/null | grep -F __STDC_VERSION__
define __STDC_VERSION__ 201112L
查看C++编译器版本(和其他默认宏定义)
Windows:
1 | gcc -x c++ -E -dM NUL > g++std.hh |
Linux:
gcc -E -dM -x c++ /dev/null > g++std.hh
打开gccstd.hh查找__cplusplus,其值定义如下:
__cplusplus |
标准 |
|---|---|
| 199711L | C++98 / C++03 |
| 201103L | C++0x / C++11 |
| 201402L | C++1y / C++14 |
| 201703L | C++1z / C++17 |
| 202002L | C++2a / C++20 |
| 202100L | C++23 |
直接显示__cplusplus
Windows:
1 | > gcc -E -dM -x c++ NUL | findstr /I /c:"__cplusplus" |
Linux:
gcc -E -dM -x c++ /dev/null | grep -F __cplusplus
define __cplusplus 201402L
补充说明
表格中的内容来源于[1]的总结,更多总结详见[2]。