Нужно ли мне даже `-pedantic`, если я задаю стандарт для ANSI C с помощью` -std = c89`? - PullRequest
3 голосов
/ 20 октября 2019

Если я укажу стандарт для ANSI C с помощью -std=c89, мой код не будет работать, пока я не выполню определенные изменения, чтобы привести его в соответствие со стандартом. Так что мне даже нужно -pedantic на данный момент, если я уже установил флаг -std=c89?


Кстати, идея заключалась в том, чтобы написать код на C, который настолько независим от платформы, насколько это возможно,Я уже использовал -pedantic, так как знал, что это сделает компилятор более строгим. Однако также имеет смысл явно выбрать стандарт ANSI C. По какой-то причине я думал, что это сделает -pedantic излишним, потому что переключение на ANSI C само по себе выдает много ошибок и выглядит «достаточно строгим».

1 Ответ

1 голос
/ 20 октября 2019

Нет, хотя и -pedantic, и -std=c89 могут по отдельности вызывать сбой компиляции кода, они не делают одно и то же:

  • -std=c89 сообщит компиляторукакой стандарт ISO использовать (в данном случае ANSI C, также известный как C89 или C90)
  • -pedantic сообщит компилятору, насколько строго должен соблюдаться выбранный стандарт

Вы можететакже найдите следующий полезный совет на странице руководства. -std=c89 эквивалентно -ansi, для которого man gcc говорит:

Опция -ansi не приводит к бесплатному отклонению программ, не относящихся к ISO. Для этого требуется -pedantic в дополнение к -ansi.

...