Mein Code ist voll von Anrufen an assert(condition)
. In der Debug-Version verwende ich, g++ -g
die meine Behauptungen auslöst. Unerwarteterweise werden dieselben Behauptungen auch in meiner Release-Version ausgelöst, die ohne -g
Option kompiliert wurde .
Wie kann ich meine Zusicherungen beim Kompilieren vollständig deaktivieren? Sollte ich NDEBUG
in jedem Build, den ich produziere, explizit definieren , unabhängig davon, ob es sich um Debug, Release oder etwas anderes handelt?
-g
entspricht dies-g2
.-g3
könnte eine bessere Wahl sein, da es die symbolischsten Informationen zur Verfügung stellt. Beispielsweise sind unter-g3
symbolische #defines verfügbar. Ich habe jedoch den Eindruck, dass einige Werkzeugketten ersticken-g3
. Viele externe Bibliotheken hängen auch von-DDEBUG
'Debug'-Builds ab (Posix bestätigt dies nur-DNDEBUG
für' Release'-Builds).