40

我目前使用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’

我替换c11gnu11,我得到了同样的错误。为 gcc 启用最新 C 标准的正确方法是什么?

(注意:我对最新的 C 标准感兴趣,而不是最新的 C++ 标准。)

4

4 回答 4

59

正确的选项是-std=c11

但是,它在 中不可用gcc 4.6。您至少需要gcc 4.7支持此选项。在一些较旧的版本中,如C11 的实验性(即非常有限的)支持提供了gcc 4.6该选项。-std=c1x

请注意,当前版本gccgcc 8.2.

于 2013-04-27T20:30:57.343 回答
3

只是为了让您知道 GCC 4.9.x 比旧版本有更完整的支持。如果你真的需要使用这个功能,请切换到任何 4.8+ 这里是支持状态 - https://gcc.gnu.org/wiki/C11Status

于 2015-04-06T16:56:12.730 回答
3

gcc 5.2.0 使用命令行选项'-std=c11'</p>

于 2016-11-08T20:41:04.850 回答
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
于 2016-04-06T14:23:09.437 回答