G++: strengste Parameteroptionen
-
Im G++ gibt es ja hundert verschiedene Optionsmöglichkeiten. Ich würde gerne wissen, was ich einstellen muss, damit das Programm am strengsten ist und mir wirklich alle Warnungen anzeigt, die es gibt, und nur den korrektesten Code akzeptiert. Aber sagt mir jetzt nicht, ich solle dafür -Wall angeben, denn das ist Quatsch. -Wall liefert nämlich längst nicht alle Warnungen, zum Beispiel gibt es dazu noch -Wextra und ein paar Einzelwarnungen, die immer noch nicht abgedeckt sind und manuell angeführt werden müssen. Welche Optionen muss ich also angeben, damit alle Sachen, die angemeckert werden können, auch wirklich angemeckert werden?
-
Es gibt noch -pedantic und -Weffc++ . Aber ob das z.B. vor implizite Typumwandlungen warnt, weiss ich nicht.
-
Die Frage wurde schönerweise gerade in einem anderen Thread überaus ausführlich beantwortet:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-256461.html
abc.w schrieb:
CXXFLAGS = -W CXXFLAGS += -Werror CXXFLAGS += -Wall CXXFLAGS += -Wextra CXXFLAGS += -Wabi CXXFLAGS += -Wreorder CXXFLAGS += -Weffc++ CXXFLAGS += -Wold-style-cast CXXFLAGS += -Wsign-promo CXXFLAGS += -Wformat-nonliteral CXXFLAGS += -Wformat-security CXXFLAGS += -Wformat=2 CXXFLAGS += -Winit-self CXXFLAGS += -Wuninitialized CXXFLAGS += -Wmissing-include-dirs CXXFLAGS += -Wswitch CXXFLAGS += -Wswitch-default CXXFLAGS += -Wswitch-enum CXXFLAGS += -Wunused-parameter CXXFLAGS += -Wunused CXXFLAGS += -Wunknown-pragmas CXXFLAGS += -Wstrict-overflow CXXFLAGS += -Wstrict-overflow=1 CXXFLAGS += -Wstrict-overflow=2 CXXFLAGS += -Wstrict-overflow=3 CXXFLAGS += -Wstrict-overflow=4 CXXFLAGS += -Wstrict-overflow=5 CXXFLAGS += -Wfloat-equal CXXFLAGS += -Wundef CXXFLAGS += -Wshadow CXXFLAGS += -Wunsafe-loop-optimizations CXXFLAGS += -Wpointer-arith CXXFLAGS += -Wcast-qual CXXFLAGS += -Wcast-align CXXFLAGS += -Wwrite-strings CXXFLAGS += -Wconversion CXXFLAGS += -Wsign-conversion CXXFLAGS += -Wlogical-op CXXFLAGS += -Waggregate-return CXXFLAGS += -Wmissing-field-initializers CXXFLAGS += -Wpacked CXXFLAGS += -Wpadded CXXFLAGS += -Wredundant-decls CXXFLAGS += -Wvolatile-register-var CXXFLAGS += -Winvalid-pch CXXFLAGS += -Wnormalized=nfkc CXXFLAGS += -Wsequence-point
-
Mindestens sollte man
-Wall -Wextra -pedantic-errors -std=c++0x
benutzen.Bei den zusätzlichen Warnings kann ich immer einen Blick in Freundlichs SGE empfehlen:
http://github.com/MrN/spacegameengine/blob/master/CMakeLists.txtAber die Liste von abc.w ist auch nicht schlecht.
http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Warning-Options.html#Warning-Options