我目前使用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’
我換成c11
與gnu11
,我也得到了同樣的錯誤。爲gcc啓用最新C標準的正確方法是什麼?
:
我目前使用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’
我換成c11
與gnu11
,我也得到了同樣的錯誤。爲gcc啓用最新C標準的正確方法是什麼?
:
-std=c11
是正確的選擇,但不gcc 4.6
可用(注意:我很感興趣,最新的C標準,而不是最新的C++一個)。
您至少需要gcc 4.7
才能支持此選項。在一些較舊版本如gcc 4.6
中,選項-std=c1x
可用於實驗(即,非常有限)的C11支持。
另請注意,當前版本的gcc
爲gcc 4.8.0
。
正確的答案,但對我的體驗來說, std = c11'還沒有工作,請小心。 gcc中缺少一些C11,因此使用C11和gcc不是(很容易)。 – 2013-04-27 21:45:33
4.8.1剛剛發佈http://gcc.gnu.org/ml/gcc-announce/2013/msg00004.html完全支持 – bluszcz 2013-06-04 08:14:08
@bluszcz這是在談論g ++和C++ 11,也是如此gcc和C11? – complistic 2013-06-05 03:50:34
只是讓你知道GCC 4.9.x比老版本更全面的支持。如果你確實需要使用此功能,請切換到任何4.8+ 這裏是支持狀態 - https://gcc.gnu.org/wiki/C11Status
裏面一個的.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
儘管此代碼可能會回答問題,但提供 有關_why_和/或_how_的附加上下文,它將回答 該問題將顯着提高其長期值 值。請[編輯]你的答案,添加一些解釋。 – 2016-04-06 17:50:05
GCC 5.2.0作品與命令行選項'-std = c11'
如果你對gcc的工作包裝感興趣,它會阻礙C11的許多有趣的功能,可以看看P99,p99.gforge.inria.fr – 2013-04-27 21:47:06