ASSERT(3)

NAZWA
assert - przerwanie pracy programu, jeśli wyrażenie jest fałszywe

SKŁADNIA
#include <assert.h>

void assert(scalar wyrażenie);

OPIS
Jeśli w momencie ostatniego włączenia pliku <assert.h> jest zdefiniowane makro NDEBUG, to makro assert() nie generuje żadnego kodu, więc w ogóle nic nie robi. W przeciwnym przypadku makro assert() wypisuje komunikat na standardowym wyjściu błędów i przerywa pracę programu przez wywołanie abort(3) jeśli wyrażenie jest fałszywe (to jest równe zeru).

Celem istnienia tego makra jest pomoc programistom w znalezieniu usterek w ich programach. Komunikat "assertion failed in file foo.c, function do_bar(), line 1287" jest bezużyteczny dla użytkownika.

WARTOŚĆ ZWRACANA
Nie jest zwracana żadna wartość.

ZGODNE Z
POSIX.1-2001, C89, C99. W C89 wyrażenie musi być typu int, w przeciwnym wypadku zachowanie funkcji jest nieokreślone, jednakże w C99 może być dowolnego typu skalarnego.

BŁĘDY
assert() jest zaimplementowane jako makro. Jeśli testowane wyrażenie ma jakieś efekty uboczne, zachowanie programu będzie różne w zależności od tego, czy zdefiniowano makrodefinicję NDEBUG. Może to prowadzić do Heisenbugów [patrz: http://pl.wikipedia.org/wiki/Heisenbug - przyp.tłum.], które nie występują przy włączonym odpluskwianiu.

ZOBACZ TAKŻE
abort(3), assert_perror(3), exit(3)

O STRONIE
Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów, oraz najnowszą wersję oryginału można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Adam Byrtek (PTM) <abyrtek@priv.onet.pl>, Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.71 oryginału.