2013-04-27 197 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'

相關問題