Scroll to navigation

ASSERT(3) Linux-Programmierhandbuch ASSERT(3)

BEZEICHNUNG

assert - Bricht das Programm ab, wenn der Prüfausdruck falsch ergibt.

ÜBERSICHT

#include <assert.h>
void assert(scalar expression);

BESCHREIBUNG

Dieses Makro kann Programmierern beim Suchen von Fehlern in ihren Programmen helfen oder besondere Fälle beim Absturz handhaben, bei denen nur begrenzte Fehlersuchausgabe erfolgt.

Falls expression »falsch« (d.h. identisch Null) ist wird assert() eine Fehlermeldung auf der Standardfehlerausgabe ausgeben und das Programm durch Aufruf von abort(3) beenden. Die Fehlermeldung enthält den Namen der Datei und die Funktion, die den assert()-Aufruf enthielt, die Quellcodezeilennummer des Aufrufs und den Text des Arguments, also etwas der folgenden Art:

prog: some_file.c:16: some_func: Assertion `val == 0' failed.

Ist das Makro NDEBUG definiert, wenn das letzte Include für <assert.h> erfolgt, erzeugt das Makro assert() keinen Code und bewirkt gar nichts. Es wird empfohlen, NDEBUG zu definieren, falls assert() zum Erkennen von Fehlerbedingungen verwandt wird, da die Software sich nichtdeterministisch verhalten könnte.

RÜCKGABEWERT

Es wurde kein Wert zurückgegeben.

ATTRIBUTE

Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
Schnittstelle Attribut Wert
assert() Multithread-Fähigkeit MT-Safe

KONFORM ZU

POSIX.1-2001, POSIX.1-2008, C89, C99. In C89 muss expression ein int sein, sonst ist das Verhalten nicht definiert. In C99 darf expression jeden skalaren Typ annehmen.

FEHLER

assert() ist ein Makro. Wenn der geprüften Ausdruck Seiteneffekte hat, ändert sich das Verhalten des Programms abhängig davon, ob NDEBUG definiert ist oder nicht. Dies kann sporadische Fehler verursachen, die bei aktivierter Debug-Option nicht auftreten.

SIEHE AUCH

abort(3), assert_perror(3), exit(3)

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 5.04 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Ralf Demmer <rdemmer@rdemmer.de>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> und Dr. Tobias Quathamer <toddy@debian.org> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.

15. September 2017 GNU