assert
Nach oben zu Assert.h - Index
Inhaltsverzeichnis
Header-Datei
assert.h
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 failed: test, file filename, line linenum
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.
Portabilität
POSIX | ANSI C | ANSI C++ | Win32 | Win64 | macOS | |
---|---|---|---|---|---|---|
assert | + | + | + | + |
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;
}