GCC в Windows linux bash

#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-файлов.