Да, использование -pedantic
делает GCC более строгим.В GCC 8.2 , int foo(void) { return ({3;}); }
компилируется без жалоб, используя только -Wall -std=c11
, но получает это предупреждение с добавлением -pedantic
:
предупреждение: ISO C запрещает использование фигурных скобок в выражениях[-Wpedantic]
(Используемая функция, выражения выражений, предназначена для использования в макросах. В моем примере она используется исключительно как доказательство принципа.)
Сравнениеи контрастирование:
- Использование, например,
-std=gnu11
, запрашивает нестандартную версию C. - Использование
-std=c11
, запросы стандартная версия C. Стандарт C разрешает и даже приглашает расширения, поэтому вы все равно можете использовать определенные расширения GNU с -std=c11
. - Добавление
-pedantic
запрашивает, чтобы компилятор предупреждал об определенных расширениях GNUи «традиционные» функции, которые он разрешает иначе.
Документация также предполагает, что GCC может быть небрежным в отношении определенных предупреждений, которые он должен выдавать со стандартом C, и -pedantic
заставляет еговыдать все предупреждения, требуемые сстрогий ISO C.
Возможны дополнительные варианты;Я не специалист по диалектам и коммутаторам GCC.