====== assert() ====== assert() ist definiert in der Headerdatei [[start|''assert.h'']] in C und [[start|''cassert'']] in C++. ===== Funktion ===== assert() überprüft eine Behauptung. Die Behauptung wird gegen 0 überprüft. Ist der Wert 0 (false), wird auf die Standard-Fehler-Ausgabe eine (kompilerabhängige) Meldung geschrieben, die die aufgestellte Behauptung, den Dateinamen des Quelltext und die Zeile beinhaltet. Nach der Ausgabe der Meldung über die Standard-Funktion [[c:stdlib:abort|abort()]] abgebrochen. assert() ist als [[C:Pre:Macro|Makro]] implementiert. Das Makro kann durch Deklarierung des Makros NDEBUG abgeschaltet werden, so dass eine Release Version durch keinerlei Überprüfungen ausgebremst wird. Hierfür kann zum einen das Makro definiert werden, bevor assert.h eingebunden wird: #define NDEBUG Über die [[c:compiler:options|Compiler-Optionen]] lässt sich das Debug-Flag auch über den Compileraufruf, so dass das Makro zum Beispiel über ein [[make:start|Makeskript]] gesteuert werden kann. ===== Signatur ===== #include void assert( int expression ); **expression**: zu überprüfender Ausdruck ===== Fehlerquellen ===== Als Expression sollte ein Ausdruck übergeben werden, der den Programmzustand nicht verändert. Eine Variablenzuweisung oder Inkrement bzw. Dekrementoperatoren werden so nur ausgeführt, wenn das Programm getestet wird, aber nicht in der Releaseversion. Das Programm würde in dem Fall also in der Debug und Releaseversion unterschiedliche Ergebnisse liefern. ===== Beispiel ===== // #define NDEBUG // Kommentarzeichen entfernen, falls nicht getestet werden soll #include int add( int s1, int s2 ) { return s1 + s2; } int main( void ) { int temp = add( 1, 2 ); assert( temp == 3 ); return EXIT_SUCCESS; } ===== siehe auch ===== -