現在、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’
c11
をgnu11
に置き換えましたが、同じエラーが表示されます。 gccの最新のC標準を有効にする正しい方法は何ですか?
(注:最新のC++標準ではなく、最新のC標準に興味があります。)
正しいオプションは-std=c11
です。
ただし、gcc 4.6
では使用できません。このオプションをサポートするには、少なくともgcc 4.7
が必要です。 gcc 4.6
のような一部の古いバージョンでは、オプション-std=c1x
がC11の実験的(つまり、非常に限定的な)サポートで利用可能でした。
gcc
の現在のバージョンはgcc 8.2
であることに注意してください。
お知らせするために、GCC 4.9.xは古いバージョンよりもはるかに完全なサポートを提供しています。この機能を本当に使用する必要がある場合は、4.8 +に切り替えてください。サポート状況は次のとおりです- https://gcc.gnu.org/wiki/C11Status
gcc 5.2.0はコマンドラインオプション「-std = c11」で動作します
.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