По умолчанию при компиляции не отображается никакх предупреждений. Тем не менее предупреждения компилятора могут подсказать о наличие определенных проблем в коде, даже если код успешно компилируется. Простейший пример: в программе определена переменная, но она нигде не используется. И при компиляции компилятор может подсказать о данной пробелеме, что поможет разработчику идентифицировать проблему и сразу отреагировать на нее.
Для компиляции с предупреждениями применяется флаг -Wall
:
g++ -Wall source.cpp
Есть разные версии стандарта языка Си, и каждый из них может добавлять дополнительный функционал, который мы, возможно, захотим использовать в программе. С помощью флага -std= можно указать конкретный стандарт, добавив c++11
, c++14
,
c++17
или c++20
. Например, для компиляции в стандарт c++17
нужно написать:
g++ -std=c++17 source.cpp
Аналогично для компиляции в стандарт C++20
используется команда:
g++ -std=c++20 source.c
Чтобы гарантировать, что программа будет строго соответствовать определенному стандарту, можно указать флаг -pedantic
g++ -std=c++11 -Wall -pedantic app.cpp g++ -std=c++14 -Wall -pedantic app.cpp g++ -std=c++17 -Wall -pedantic app.cpp g++ -std=c++20 -Wall -pedantic app.cpp
В этом случае компилятор будет генерировать предупреждения, если код не соответствует правилам стандарта.
Для того, чтобы автоматически запустить приложение после компиляции, можно использовать следующую команду:
g++ source.cpp & ./a.out
Можно налепить в одну команду различные опции:
g++ -std=c++20 -Wall -pedantic app.cpp -o app & app
Основные параметры компилятора Clang в ряде случаев повторяют параметры для gcc. Например, компиляция с помощью Clang под определенный стандарт с выводом ошибок:
clang++ -std=c++20 -Wall -pedantic app.cpp -o app.exe & app.exe