-Wpedantic
-pedantic
Выдавать все предупреждения, требуемые строгими стандартами ISO C и ISO C ++; отклонить все программы, использующие запрещенные расширения, а также некоторые другие программы, не соответствующие ISO C и ISO C ++. Для ISO C следует версии стандарта ISO C, заданной любым используемым параметром -std
.
Действительные программы ISO C и ISO C ++ должны правильно компилироваться с этим параметром или без него (хотя в редких случаях требуется опция -ansi
или -std
с указанием требуемой версии ISO C). Однако без этой опции также поддерживаются некоторые расширения GNU и традиционные функции C и C ++. С этой опцией они отклоняются.
-Wpedantic
не вызывает предупреждающих сообщений об использовании альтернативных ключевых слов, имена которых начинаются и заканчиваются на '__
'. Этот альтернативный формат также можно использовать для отключения предупреждений для типов, отличных от ISO «__intN
», например, «__intN__
». Предупреждения Pedanti c также отключены в выражении, которое следует за __extension__
. Однако только системные файлы заголовков должны использовать эти пути выхода; прикладные программы должны избегать их. См. Альтернативные ключевые слова.
Некоторые пользователи пытаются использовать -Wpedantic
для проверки программ на строгое соответствие ISO C. Вскоре они обнаруживают, что он делает не совсем то, что им нужно: он обнаруживает некоторые методы, отличные от ISO, но не все - только те, для которых ISO C требует диагностики c, и некоторые другие, для которых была добавлена диагностика.
Функция сообщения о любом несоответствии ISO C может быть полезной в некоторых случаях, но потребует значительных дополнительных усилий и будет сильно отличаться от -Wpedantic
. У нас нет планов поддерживать такую функцию в ближайшем будущем.
Где стандарт, указанный с помощью -std
, представляет собой расширенный диалект GNU C, например 'gnu90
' или 'gnu99
', существует соответствующий базовый стандарт, версия ISO C, на которой основан расширенный диалект GNU. Предупреждения от -Wpedantic
даются там, где они требуются базовым стандартом. (Не имеет смысла выдавать такие предупреждения только для функций, не относящихся к указанному диалекту GNU C, поскольку по определению диалекты GNU C включают все функции, поддерживаемые компилятором с данной опцией, и это будет не о чем предупреждать.)
-pedantic-errors
Выдает ошибку всякий раз, когда базовый стандарт (см. -Wpedantic
) требует диагностики c, в некоторых случаях, когда есть неопределенное поведение в во время компиляции и в некоторых других случаях, которые не препятствуют компиляции программ, которые действительны в соответствии со стандартом. Это не эквивалентно -Werror=pedantic
, так как есть ошибки, разрешенные этой опцией, но не разрешенные последней, и наоборот.
Я подчеркиваю выделенную часть - очевидно, некоторые вещи могут все же проскользнуть . Тем не менее, я нахожу этот вариант достаточным для своих нужд.