#c #linux #bash #gcc
#c #linux #bash #gcc
Вопрос:
Я использую ubuntu через windows linux bash, и случается, что я пытаюсь скомпилировать файл и получаю эту ошибку:
"error: ‘for’ loop initial declarations are only allowed in C99 mode".
Но на самом деле я бы хотел не использовать режим C99, а вместо этого использовать C11. Как я могу настроить свой компилятор на использование режима C11 по умолчанию без необходимости передавать какие-либо флаги?
Моя версия GCC — 4.8.4, работающая в ubuntu 14.04.3.
Спасибо.
Комментарии:
1. Использовать
-std=c11
.2. @KerrekSB Я знаю, что это работает, но вместо этого я хотел бы сделать это по умолчанию!
3. Перекомпилируйте GCC в с желаемым значением по умолчанию.
Ответ №1:
Вам необходимо указать -std=c99
или -std=gnu99
или выше, чтобы разрешить начальные объявления в циклах for . Или просто сначала объявите переменную и используйте ее в цикле for позже.
Для c11, конечно, -std=c11
это путь. Я не знаю способа установить это значение по умолчанию, и, возможно, нет никакого способа. Но последние компиляторы gcc 5.x имеют c11 по умолчанию.
Комментарии:
1. Как я могу обновить gcc до версии 5 ? Я попробовал sudo apt-get update, но, похоже, он обновлен.
2. Установите хороший дистрибутив, такой как Arch Linux , и забудьте о несовместимых пакетах или подобных проблемах с менеджерами пакетов.
Ответ №2:
Альтернатива самостоятельной сборке GCC (сложной и подверженной ошибкам), обновите GCC (более новые GCC могут быть не в состоянии скомпилировать ядро, разработчики ядра и разработчики GCC идут не всегда, как бы это сказать… d’accord) и вводя -std=c11
каждый раз, вы можете установить псевдоним. Поместите следующую строку в конце вашего .bashrc
alias gcc11="gcc -std=c11"
Пусть оболочка перечитает свой конфигурационный файл с помощью source ~/.bashrc
(если я правильно помню Ubuntu) и попробует его.
Вы также можете вызвать псевдоним gcc
, но это может привести к поломке сторонних make-файлов.