如果已经配置到系统环境中则直接使用;
如果没有配置到系统环境中,找到当前使用的交叉编译器的路径;
gcc -E -dM - </dev/null | grep "STDC_VERSION"
或者编写一段小代码:
printf("%ld\n",__STDC_VERSION__);
printf("%ld\n",__cplusplus);
对应关系如下
如果没查到,则默认是c89的标准;
如果是#define __STDC_VERSION__ 199901L,则默认支持的是c99标准;
如果是#define __STDC_VERSION__ 201112L,则默认支持的c11标准;
- C ++ 98:
__cplusplus
是199711L
- C ++ 11:
__cplusplus
是201103L
- C ++ 14:
__cplusplus
是201402L
- C ++ 17:
__cplusplus
是201703L
例如我的环境编译器就是支持C++11标准的,如下:
显示的是:#define __STDC_VERSION__ 201112L
看版本信息,可以使用arm-linux-gnueabihf-g++ -v或者是--version就可以得到版本信息了。
或者:
检查g++编译器 是否支持 C++11
For check support C++14 and other. Testing on GCC 5.2.1.
#include <iostream>
using namespace std;
int main()
{
#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900)
cout << "C++11 is supported";
#else
cout << "C++11 is not supported";
#endif
return 0;
}
}