assert(3)

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

BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)

SKŁADNIA
#include <assert.h>

void assert(scalar wyrażenie);

OPIS
To makro może pomóc programistom znajdować błędy w ich programach lub obsługiwać wyjątki przez wywołanie awarii zapewniającej ograniczone wyjście debugowania.

Jeśli wyrażenie jest fałszywe (to jest równe zeru), assert() wyświetli błąd na standardowe wyjście błędów i przerywa pracę programu przez wywołanie abort(3). Komunikat błędu zawiera nazwę pliku i funkcji zawierającej wywołanie assert(), numer wiersza kodu źródłowego z wywołaniem i tekst argumentu np.:

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

Jeśli w momencie ostatniego włączenia pliku <assert.h> było zdefiniowane makro NDEBUG, to makro assert() nie generuje żadnego kodu, więc w ogóle nic nie robi. Nie zaleca się definiowania NDEBUG przy używaniu assert() do wykrywania błędów, ponieważ oprogramowanie może zachowywać się nieprzewidywalnie.

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

ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
Interfejs | Atrybut | Wartość
assert() | Bezpieczeństwo wątkowe | MT-bezpieczne

STANDARDY
C11, POSIX.1-2008.

HISTORIA
C89, C99, POSIX.1-2001.

In C89, expression is required to be of type int and undefined behavior results if it is not, but in C99 it may have any scalar type.

USTERKI
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)

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Adam Byrtek <alpha@irc.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.