Как включить c11 в более поздних версиях gcc?

В настоящее время я использую gcc 4.6.3 . Я понимаю, что gcc по умолчанию использует стандарт gnu89 и я бы хотел включить C11, последний стандарт C. Я старался:

 [pauldb@pauldb-laptop test ]$ gcc -std=c11 -o test test.c cc1: error: unrecognised command line option '-std=c11' 

Я заменил c11 на gnu11 и я получаю ту же ошибку. Каков правильный способ включения новейшего стандарта C для gcc?

(Примечание: меня интересует последний стандарт C, а не последний C ++).

Правильный вариант: -std=c11 .

Однако он не доступен в gcc 4.6 . Вам нужно, по крайней мере, gcc 4.7 чтобы эта опция поддерживалась. В некоторых более старых версиях, таких как gcc 4.6 , опция -std=c1x была доступна с экспериментальной (то есть очень ограниченной) поддержкой C11.

Обратите внимание, что текущая версия gccgcc 8.2 .

gcc 5.2.0 работает с опцией командной строки ‘-std = c11’

Просто чтобы вы знали, что 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