MyTetra Share
Делитесь знаниями!
Флаги компилятора gcc для отображения всех предупреждений
08.12.2017
16:21
Текстовые метки: gcc, g++, warning, предупреждения, опции, компилятор, -Wall
Раздел: Компьютер - Программирование - Компилятор GCC

Общеизвестно, что опция компиляции -Wall отображает не все предупреждения, которые возникают в процессе компиляции. Иногда полезно провести компиляцию с отображением всех предупреждений. Далее даны опции, которые помогут отображить все возможные проблемы, обнаруженные компилятором.


В шаблоне makefile можно выставить такие переменные, содержащие ключи отображения предупреждений:


WARNINGS = -Wall -Wextra -pedantic -Wstrict-aliasing=2 -Wformat-security \

-Wstrict-overflow=5 -Wfloat-equal -Wformat-extra-args -Wshadow -Winit-self\

-Wswitch-default -Wformat-nonliteral -Wuninitialized -Wdouble-promotion \

-Walloca -Wdouble-promotion -Wduplicated-branches -Wduplicated-cond \

-Wconversion -Wpadded -Wlogical-not-parentheses -Walloc-zero -Wcast-qual \

-Wformat-y2k -Wcast-align -Wlogical-op -Wwrite-strings -Wsign-conversion \

-Wredundant-decls -Wmissing-include-dirs -Wswitch-enum -Wstack-protector

WARNINGS_CPP_ONLY = -Wuseless-cast -Wold-style-cast -Woverloaded-virtual \

-Wsuggest-final-methods -Wsuggest-override -Wzero-as-null-pointer-constant\

-Wsuggest-final-types -Weffc++ -Wsubobject-linkage

WARNINGS_C_ONLY = -Wc++-compat -Wbad-function-cast


Эти опции предупреждений можно разместить в переменных CFLAGS и CXXFLAGS файла Makefile вот так:


FLAGS = $(OPTIMIZE) $(WARNINGS) $(INCLUDE) $(LTO) $(DEFINES) $(OPENMP) $(SECURITY) $(DEBUG)

CFLAGS = $(CSTANDARD) $(FLAGS) $(WARNINGS_C_ONLY)

CXXFLAGS = $(CXXSTANDARD) $(FLAGS) $(WARNINGS_CPP_ONLY)


По идее, gcc/g++ подхватит эти настройки и в процессе компиляции будет их использовать.


Итог: С такими флагами компилятор начнет отображать все возможные предупреждения. Для создания чистого переносимого кода желательно (хотя это и не всегда возможно, поэтому тут без фанатизма) избавляться от предупреждений в "полном" режиме отображения возможных проблем. Хотя, встретить настолько педантичных разработчиков очень сложно.




Знаете ли вы, что:

Каждый программист в своей жизни пишет много "велосипедов". Пока пишет, протирает свой зад за компьютером, портит зрение... Зачем так делать? Лучше купить велосипед, доехать до Минска, сравнить цены и купить второй велосипед. Здоровья будет больше. Подробности тут: https://unishop.by/categories/velosipedy/



Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования