assert
Nach oben zu assert.h - Index
Header-Datei
assert.h
Kategorie
Diagnoseroutinen
Prototyp
void assert(int test);
Beschreibung
Testet eine Bedingung und bricht die Ausführung möglicherweise ab.
assert ist ein Makro, das zu einer if-Anweisung erweitert wird. Wenn die Auswertung von test 0 ergibt, ruft das Makro assert die Funktion _assert auf
void _RTLENTRY _EXPFUNC _assert(char * __cond, char * __file, int __line);
und bricht die Programmausführung ab. Die Funktion _assert ruft abort auf und gibt die folgende Meldung auf stderr aus:
Assertion fehlerhaft: Test, Datei Dateiname, Zeile Zeilennummer
Die in der Meldung angebenen Platzhalter Dateiname und Zeilennummer stehen für den Dateinamen und die Zeilennummer der Quelltextdatei, die das Makro assert enthält.
Wenn die Direktive #define NDEBUG ("nicht Debuggen") vor der Direktive #include <assert.h> in die Quelltextdatei eingefügt wird, dann wird das Makro zu einer Anweisung erweitert, die keine Operation durchführt, weil die assert-Anweisung dann auskommentiert wird.
Rückgabewert
Keiner.
Beispiel
#include <assert.h> #include <stdio.h> #include <stdlib.h> struct ITEM { int key; int value; }; /* Item der Liste hinzufügen, sicherstellen, dass die Liste nicht Null ist */ void additem(struct ITEM *itemptr) { assert(itemptr != NULL); /* Item der Liste hinzufügen */ } int main(void) { additem(NULL); return 0; }
Portabilität
| POSIX | Win32 | ANSI C | ANSI C++ |
|---|---|---|---|
|
+ |
+ |
+ |
+ |