Я видел вариант компилятора GNU99 и C99. Какая разница в них? Любая подробная документация? (Clang, Xcode, Mac OS X)
Какая разница между GNU99 и C99 (Clang)?
Ответ 1
Различия между различными стандартными режимами
clang поддерживает параметр -std, который изменяет используемый язык clang. Поддерживаемые режимы для C - c89, gnu89, c94, c99, gnu99 и различные псевдонимы для этих режимов. Если не указана опция -std, clang по умолчанию используется в режиме gnu99.
Различия между всеми режимами c * и gnu *:
- c * режимы определяют
__STRICT_ANSI__
.- Определения по конкретным параметрам, не обозначенные символами подчеркивания, как "linux", определяются в режимах gnu *.
- По умолчанию триггеры отключены в режимах gnu *; они могут быть включены с помощью параметра
-trigraphs
.- Анализатор распознает "asm" и "typeof" как ключевые слова в режимах gnu *; варианты
__asm__
и__typeof__
распознаются во всех режимах.- Расширение Apple блокируется по умолчанию в режимах gnu * на некоторых платформах; его можно включить в любом режиме с опцией
-fblocks
.
Другие ссылки
Ответ 2
C99 - прямой C99, GNU99 - C99 с расширениями gnu. См. справочная страница GCC.
Ответ 3
C99 - это просто версия стандарта C от 1999 года, как мы все это знаем. В GCC он не поддерживается полностью.
GNU99 является расширением для C99, так же как GNU98 является расширением C98. Из документов:
ISO C99 плюс расширения GNU. Когда ISO C99 будет полностью реализован в GCC, это станет стандартным. Имя gnu9x устарело.
Clang также поддерживает эти расширения.