assert(3) Library Functions Manual assert(3) NAZWA assert - przerwanie pracy 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. 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. 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.06 31 pazdziernika 2023 r. assert(3)