我目前使用gcc 4.6.3
。我的理解是gcc
默认使用gnu89
标准,我想启用最新的C标准C11。我试过了:
[pauldb@pauldb-laptop test ]$ gcc -std=c11 -o test test.c
cc1: error: unrecognised command line option ‘-std=c11’
我将c11
替换为gnu11
,我得到了同样的错误。为gcc启用最新C标准的正确方法是什么?
(注意:我对最新的C标准感兴趣,而不是最新的C ++标准。)
答案 0 :(得分:55)
正确的选项是-std=c11
。
但是,gcc 4.6
中没有该功能。您至少需要gcc 4.7
才能支持此选项。在某些旧版本gcc 4.6
中,选项-std=c1x
可用于C11的实验性(即非常有限)支持。
请注意,gcc
的当前版本为gcc 8.2
。
答案 1 :(得分:3)
只是为了让您了解GCC 4.9.x比旧版本提供更完整的支持。如果您确实需要使用此功能,请切换到4.8+以上 以下是支持状态 - https://gcc.gnu.org/wiki/C11Status
答案 2 :(得分:3)
gcc 5.2.0使用命令行选项'-std = c11'
答案 3 :(得分:1)
在.spec文件中:
%define gcc_ver %(if [[ $(gcc -dumpversion) > 4.7 ]]; then echo 1; else echo 0; fi)
# Do we use c11 ?
%if 0%{?gcc_ver} < 1
%global std_c11 0
%else
%global std_c11 1
%endif
# if the configure of the package supports it add :
%if %{std_c11}
--enable-cxx11 \
%endif