如何在更高版本的gcc上启用c11?

时间:2013-04-27 20:29:54

标签: c gcc c11

我目前使用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 ++标准。)

4 个答案:

答案 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