Какова цель использования -pedantic в компиляторе GCC / G ++?

<init-param> будет использоваться, если вы хотите инициализировать некоторый параметр для определенного сервлета. Когда запрос приходит к сервлету сначала, его метод init будет вызываться тогда doGet/doPost, тогда как если вы хотите инициализировать некоторую переменную для всего приложения, вам нужно будет использовать <context-param>. Каждый сервлет будет иметь доступ к контекстной переменной.

126
задан Jonathan Leffler 21 June 2017 в 04:47
поделиться

5 ответов

Я постоянно использую его в коде.

Флаг -ansi эквивалентен -std = c89 . Как уже отмечалось, он отключает некоторые расширения GCC. Добавление -pedantic отключает больше расширений и генерирует больше предупреждений. Например, если у вас есть строковый литерал длиной более 509 символов, то -pedantic предупреждает об этом, поскольку он превышает минимальный предел, требуемый стандартом C89. То есть каждый компилятор C89 должен принимать строки длиной 509; им разрешено принимать более длинные строки, но если вы проявляете педантичность, использование более длинных строк непереносимо, даже если компилятору разрешено принимать более длинные строки, и, без педантичных предупреждений, GCC тоже их примет.

97
ответ дан 24 November 2019 в 00:46
поделиться

По сути, это значительно упростит компиляцию вашего кода в других компиляторах, которые также реализуют стандарт ANSI, и, если вы будете осторожны с тем, какие библиотеки / вызовы API вы используете, в других операционных системах. системы / платформы.

Первый отключает КОНКРЕТНЫЕ функции GCC. (-анси) Второй будет жаловаться на НИЧЕГО, что не соответствует стандарту (не только на специфические особенности GCC, но и на ваши конструкции) (-pedantic).

14
ответ дан 24 November 2019 в 00:46
поделиться

Pedantic делает так, что компилятор gcc отклоняет все расширения GNU C, а не только те, которые делают его совместимым с ANSI.

0
ответ дан 24 November 2019 в 00:46
поделиться

Если ваш код должен быть переносимым , вы можете проверить, что он компилируется без каких-либо расширений gcc или других нестандартных функций. Если ваш код компилируется с помощью -pedantic -ansi , то теоретически он должен нормально компилироваться с любым другим стандартным компилятором ANSI.

6
ответ дан 24 November 2019 в 00:46
поделиться

Если вы пишете код, который, по вашему мнению, будет скомпилирован на самых разных платформах, с множеством разных компиляторов, то использование этих флагов самостоятельно поможет вам убедиться, что вы этого не сделаете. • создавать код, который компилируется только под GCC.

3
ответ дан 24 November 2019 в 00:46
поделиться