Как включить 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, а не последний С++).
Ответы
Ответ 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