assert(3) Library Functions Manual assert(3) NAZWA assert - przerywa prace programu, jesli wyrazenie jest falszywe BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include void assert(scalar wyrazenie); OPIS To makro moze pomoc programistom znajdowac bledy w ich programach lub obslugiwac wyjatki przez wywolanie awarii zapewniajacej ograniczone wyjscie debugowania. Jesli wyrazenie jest falszywe (to jest rowne zeru), assert() wyswietli blad na standardowe wyjscie bledow i przerywa prace programu przez wywolanie abort(3). Komunikat bledu zawiera nazwe pliku i funkcji zawierajacej wywolanie assert(), numer wiersza kodu zrodlowego z wywolaniem i tekst argumentu np.: prog: some_file.c:16: some_func: Assertion `val == 0' failed. Jesli w momencie ostatniego wlaczenia pliku bylo zdefiniowane makro NDEBUG, to makro assert() nie generuje zadnego kodu, wiec w ogole nic nie robi. Nie zaleca sie definiowania NDEBUG przy uzywaniu assert() do wykrywania bledow, poniewaz oprogramowanie moze zachowywac sie nieprzewidywalnie. WARTOSC ZWRACANA Nie jest zwracana zadna wartosc. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +---------------------------+--------------------------+---------------+ |Interfejs | Atrybut | Wartosc | +---------------------------+--------------------------+---------------+ |assert() | Bezpieczenstwo watkowe | MT-bezpieczne | +---------------------------+--------------------------+---------------+ STANDARDY C11, POSIX.1-2008. HISTORIA C89, C99, POSIX.1-2001. W C89 wyrazenie musi byc typu int, w przeciwnym wypadku zachowanie funkcji jest nieokreslone, jednakze w C99 moze byc dowolnego typu skalarnego. USTERKI assert() jest zaimplementowane jako makro. Jesli testowane wyrazenie ma jakies efekty uboczne, zachowanie programu bedzie rozne w zaleznosci od tego, czy zdefiniowano makrodefinicje NDEBUG. Moze to prowadzic do Heisenbugow [patrz: http://pl.wikipedia.org/wiki/Heisenbug - przyp.tlum.], ktore nie wystepuja przy wlaczonym odpluskwianiu. ZOBACZ TAKZE abort(3), assert_perror(3), exit(3) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Adam Byrtek , Andrzej Krzysztofowicz , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.9.1 2 maja 2024 r. assert(3)