C99 не по умолчанию C-версия для GCC?

Почему GCC не компилирует C99 по умолчанию? Я имею в виду, почему необходимо добавить флаг --std = c99 каждый раз записывается код на C99?

Ответ 1

Изменить: По состоянию на GCC 5, -std=gnu11 является значением по умолчанию. См. Портирование на GCC 5.


См. C Параметры диалога, gnu89 по умолчанию.

`gnu89

Диалог GNU по ISO C90 (включая некоторые C99). Это значение по умолчанию для C.

Как упоминалось в @tsv, ISO C99 еще не полностью поддерживается:

`c99'
`C9x '
`Iso9899: 1999'
`iso9899: 199x '

ISO C99. Обратите внимание, что этот стандарт еще не полностью поддерживается; см. http://gcc.gnu.org/c99status.html для получения дополнительной информации. Имена `c9x 'и` iso9899: 199x' устарели.

А также:

`
gnu99' `Gnu9x '

GNU-диалект ISO C99. Когда ISO C99 будет полностью реализован в GCC, это станет стандартным. Имя `gnu9x 'устарело.

Ответ 2

Возможно, потому, что он все еще не полностью реализован - см. статус C99.

Также можно утверждать, что функции C99 не получили широкого распространения, хотя это что-то вроде кругового аргумента.

Ответ 3

Используйте команду c99 для компиляции программ на C.

В текущем стандарте POSIX указывается команда c99, поэтому она должна быть доступна в большинстве Unix-подобных систем.

Ответ 4

Причина в том, что конфигурации gcc по умолчанию требуют очень долгого времени, так как каждый раз, когда конфигурация по умолчанию изменяется, она может потенциально нарушить компиляцию допустимых программ (в этом случае допустимые c89-программы, которые недействительны в c99). Начиная с gcc 5.0, стандартом C по умолчанию, используемым gcc, будет gnu11, который является c11 с расширениями gnu (см. здесь):

Режим по умолчанию для C теперь -std = gnu11 вместо -std = gnu89.