web-dev-qa-db-ja.com

gccの新しいバージョンでc11を有効にする方法は?

現在、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標準に興味があります。)

36
Paul Baltescu

正しいオプションは-std=c11です。

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

gccの現在のバージョンはgcc 8.2であることに注意してください。

55
ouah

お知らせするために、GCC 4.9.xは古いバージョンよりもはるかに完全なサポートを提供しています。この機能を本当に使用する必要がある場合は、4.8 +に切り替えてください。サポート状況は次のとおりです- https://gcc.gnu.org/wiki/C11Status

3
KeshV

gcc 5.2.0はコマンドラインオプション「-std = c11」で動作します

3
Janos

.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
1
rmstock