Флажки компиляции (или флаги компиляции) — это специальные параметры, передаваемые компилятору для управления процессом компиляции. Они позволяют настраивать оптимизацию, диагностику, стандарт языка и другие аспекты работы компилятора.
Оптимизация
-O0 — отключение оптимизации (удобно для отладки).
-O1, -O2, -O3 — уровни оптимизации (увеличивают производительность, но могут усложнить отладку).
-Os — оптимизация по размеру кода.
Диагностика и отладка
-g — включение отладочной информации (для gdb, lldb).
-Wall — включение большинства предупреждений.
-Werror — трактовка предупреждений как ошибок.
Стандарты языка
-std=c++11, -std=c++17 — выбор версии стандарта C++.
-std=c99, -std=c11 — выбор версии стандарта C.
Прочие важные флаги
-I<путь> — добавление пути к заголовочным файлам.
-L<путь> — добавление пути к библиотекам.
-l<библиотека> — линковка с библиотекой.
-D<макрос> — определение макроса (аналог #define).
g++ -std=c++17 -Wall -O2 -I./include -L./lib -lmylib main.cpp -o program
g++) получает флаги и применяет их:
-std=c++17),-Wall),-O2),./include (-I./include),mylib из ./lib (-L./lib -lmylib).-O3 может ускорить код в разы.-Wall -Werror ловит потенциальные баги.-std= гарантирует переносимость кода.Резюмируем: флажки компиляции — это мощный инструмент для тонкой настройки процесса сборки. Их грамотное использование улучшает качество, производительность и надежность ПО.