Подтвердить что ты не робот

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

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

[[email protected] test ]$ gcc -std=c11 -o test test.c
cc1: error: unrecognised command line option ‘-std=c11’

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

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

4b9b3361

Ответ 1

-std=c11 является правильной опцией, но недоступен в gcc 4.6.

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

Также обратите внимание, что текущая версия gcc равна gcc 4.8.0.

Ответ 2

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

Ответ 3

Просто чтобы вы знали, что GCC 4.9.x имеет гораздо более полную поддержку, чем более старые версии. Если вам действительно нужно использовать эту функцию, пожалуйста, переключитесь на все 4.8+ Вот статус поддержки - https://gcc.gnu.org/wiki/C11Status

Ответ 4

Внутри файла .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