2013-04-27 208 views
26

我目前使用gcc 4.6.3。我的理解是,gcc默认使用gnu89标准,我想启用最新的C标准C11。我想:如何在更高版本的gcc上启用c11?

[[email protected] test ]$ gcc -std=c11 -o test test.c 
cc1: error: unrecognised command line option ‘-std=c11’ 

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

+0

如果你对gcc的工作包装感兴趣,它会阻碍C11的许多有趣的功能,可以看看P99,p99.gforge.inria.fr – 2013-04-27 21:47:06

回答

44

-std=c11是正确的选择,但不gcc 4.6可用(注意:我很感兴趣,最新的C标准,而不是最新的C++一个)。

您至少需要gcc 4.7才能支持此选项。在一些较旧版本如gcc 4.6中,选项-std=c1x可用于实验(即,非常有限)的C11支持。

另请注意,当前版本的gccgcc 4.8.0

+1

正确的答案,但对我的体验来说, std = c11'还没有工作,请小心。 gcc中缺少一些C11,因此使用C11和gcc不是(很容易)。 – 2013-04-27 21:45:33

+1

4.8.1刚刚发布http://gcc.gnu.org/ml/gcc-announce/2013/msg00004.html完全支持 – bluszcz 2013-06-04 08:14:08

+3

@bluszcz这是在谈论g ++和C++ 11,也是如此gcc和C11? – complistic 2013-06-05 03:50:34

0

里面一个的.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 
+3

尽管此代码可能会回答问题,但提供 有关_why_和/或_how_的附加上下文,它将回答 该问题将显着提高其长期值 值。请[编辑]你的答案,添加一些解释。 – 2016-04-06 17:50:05

2

GCC 5.2.0作品与命令行选项'-std = c11'

相关问题