Mein Code ist voll von Anrufen an assert(condition). In der Debug-Version verwende ich, g++ -gdie meine Behauptungen auslöst. Unerwarteterweise werden dieselben Behauptungen auch in meiner Release-Version ausgelöst, die ohne -gOption kompiliert wurde .
Wie kann ich meine Zusicherungen beim Kompilieren vollständig deaktivieren? Sollte ich NDEBUGin jedem Build, den ich produziere, explizit definieren , unabhängig davon, ob es sich um Debug, Release oder etwas anderes handelt?
-gentspricht dies-g2.-g3könnte eine bessere Wahl sein, da es die symbolischsten Informationen zur Verfügung stellt. Beispielsweise sind unter-g3symbolische #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-DNDEBUGfür' Release'-Builds).