2016-04-25 5 views
-3

Sind Behauptungen deaktiviert in "Release" Build?Sind Asserts in Release Build deaktiviert?

Wie optionale Flags wie -O0, -O3, -g von g++ wirkt sich dies Verhalten ist?

+2

Haben Sie in Betracht gezogen, die Dokumentation zu konsultieren? –

+1

http://stackoverflow.com/questions/5354314/how-to-completely-disable-assertion – RamblinRose

Antwort

7

assert() im <cassert> Kopf nur deaktiviert, wenn Sie das Makro NDEBUG vor dem Einschließen der Header-Datei <cassert> definieren. Siehe auch diese docs

mit gcc/g ++, der einfachste Weg, dies zu tun ist, um die NDEBUG Makro in der Befehlszeile zu definieren, wenn der Compiler den Aufruf wie folgt:

g++ -DNDEBUG ... other args... 

Argumente wie Optimierungsflags und ähnliche flags deaktiviert die assert nicht.

0

Aus der Manpage:

Wenn das Makro NDEBUG zur Zeit definiert wurde, ist assert.h wurde zuletzt enthalten, erzeugt das Makro assert() keinen Code

Verwandte Themen