2013-04-27 14 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’ 

私はgnu11c11を交換し、私は同じエラーを取得します。 gccの最新のC標準を有効にする正しい方法は何ですか?

+0

もしあなたがgccのワーキングラッパーに興味があるのであれば、C11の多くの興味深いビットがP99、p99.gforge.inria.fr –

答えて

44

-std=c11が正しい選択肢であるが、gcc 4.6では使用できません(注私は、最新のC標準ではなく、最新のC++ 1に興味があります。)。

このオプションをサポートするには、少なくともgcc 4.7が必要です。 gcc 4.6のようないくつかの古いバージョンでは、-std=c1xというオプションがC11の実験的な(つまり、非常に限定された)サポートで利用可能でした。

現在のバージョンgccgcc 4.8.0です。

+1

の正解を見ていますが、私の経験によれば、 std = c11'はまだ動作していません。注意してください。 gccにはC11がないので、C11とgccで作業するのは簡単ではありません。 –

+1

4.8.1がリリースされました。完全にサポートされたhttp://gcc.gnu.org/ml/gcc-announce/2013/msg00004.html – bluszcz

+3

@bluszcz g ++とC++ 11については、同じことが行われていますgccとC11? – complistic

1

GCC 4.9.xには、旧バージョンよりもはるかに完全なサポートがあります。あなたが本当にこの機能を使用する必要がある場合は、ここでのサポート状況は何も4.8+ に切り替えてください - .specファイル内https://gcc.gnu.org/wiki/C11Status

0

%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_に関する追加のコンテキストを に追加すると、 と答えて、その質問は長期的には の値を大幅に改善します。あなたの答えを[編集]して、説明を加えてください。 –

2

GCC 5.2.0は、コマンドラインオプションと連携を'-std = c11'

関連する問題