Я изучаю C ++ и использую g ++ в Linux для практики.
Я хочу знать, используют ли люди, работающие программистами, g ++ -педантический флаг, а также его важность в реальном мире.
А как насчет других компиляторов, они также позволяют это? Стало ли это стандартом де-факто?
Мне интересно, потому что я читаю C ++ Primer, где автор указывает, что использование неконстантного выражения в качестве измерения в определении массива запрещено, и g ++ по умолчанию позволяет это. И могут быть другие вещи, о которых я не знаю.
Ответы:
Да, абсолютно так. На самом деле, вам нужно изучить страницу руководства и включить больше предупреждений, чем
-pedantic
и-Wall
будет делать.Нет, стандарта нет. MSVC использует,
/W4
например.источник
-Wall -Wextra -Werror -pedantic -std=c++0x
:)-pedantic
C ++, поскольку руководство GCC подразумевает, что оно предназначено только для C, и я перешел к использованию-std=c++14
в новых проектах.-Wall -Wextra -Werror -std=c++14
:)-Werror
превращает все предупреждения в ошибки. Но-pedantic-errors
только делает ошибки изStandard ICO C++
нарушений.Хотя я довольно давно не программировал C ++, я бы посоветовал вам использовать этот флаг. Это поможет вам создать совместимый со стандартами код и облегчит жизнь каждому. AFAIK, большинство других компиляторов не поддерживают расширения gcc / g ++.
Я ненавижу это, например, когда я не могу скомпилировать код только потому, что первоначальный разработчик решил использовать нестандартные расширения компилятора.
Могу поспорить, что огромное количество (скажем, 20%) программ linux, написанных на C / C ++, не будет компилироваться ни с чем, кроме gcc / g ++, что меня немного огорчает. Всегда придерживайтесь стандартов.
источник
Лично я использую:
-Wall -Wextra -Wshadow -Weffc ++ -Wstrict-aliasing -ansi -pedantic -Werror
Таким образом, включается множество предупреждений, но что более важно, все предупреждения рассматриваются как ошибки (так как большинство предупреждений являются логическими ошибками в вашем мышлении).
источник
-Wunreachable-code -Wno-long-long
-g -pg -fprofile-arcs -ftest-coverage
-g -O0
-O3
Весьма важно использовать
-pedantic
флаг.Я бы только добавил, что с текущим стандартом желательно использовать что-то похожее на:
Где:
-std=c++17
говорит, что придерживаться пересмотренного стандарта C ++, опубликованного в 2017 году, вы можете прочитать больше об этом здесь .-Wall
говорит это:-Wextra
говорит, чтобы включить еще несколько предупреждений, но не все.-Werror
говорит ему превратить все предупреждения в ошибки.-Wpedantic
или просто-pedantic
говорит это:-pedantic-errors
говорит ему выдавать ошибку всякий раз, когда базовый стандарт (см. -Wpedantic) требует диагностики.Этот набор обычно полезен не только для начинающих, так как они постепенно узнают, что каждое предупреждение может привести к ошибке, но и для обычного использования.
Все варианты предупреждений подробно описаны здесь, на странице GNU / GCC .
источник