| 
 |||||||
| 
    Флаги компилятора gcc для отображения всех предупреждений 
        
        
		  Время создания: 08.12.2017 16:21		  
		 
		
		 		
		
		 		 
		  Текстовые метки: gcc, g++, warning, предупреждения, опции, компилятор, -Wall		  
		 		
		
				  
		    Раздел: Компьютер - Программирование - Компилятор GCC		   
		
		
		 		 
		  Запись: xintrea/mytetra_syncro/master/base/1512739290999psiqpg6/text.html на raw.githubusercontent.com		  
		 
		
				  
  | 
 |||||||
| 
    | 
 |||||||
| 
    Общеизвестно, что опция компиляции -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++ подхватит эти настройки и в процессе компиляции будет их использовать. Итог: С такими флагами компилятор начнет отображать все возможные предупреждения. Для создания чистого переносимого кода желательно (хотя это и не всегда возможно, поэтому тут без фанатизма) избавляться от предупреждений в "полном" режиме отображения возможных проблем. Хотя, встретить настолько педантичных разработчиков очень сложно. 
  | 
 |||||||
| 
    
 
 Так же в этом разделе:
  
  
  | 
 |||||||
      
   | 
 |||||||
   
   
  | 
 |||||||
   
  |