C/assert: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
mNie podano opisu zmian |
m Drobne poprawki |
||
Linia 1:
===Deklaracja===
:<tt>#define assert(expr)</tt>
===Plik nagłówkowy===
:[[C/Biblioteka standardowa/Indeks tematyczny#assert.h|assert.h]]
===Opis===
:Makro przypominające w użyciu funkcję, służy do debuggowania programów. Gdy testowany warunek logiczny <tt>expr</tt> przyjmuje wartość fałsz, na standardowe wyjście błędów wypisywany jest komunikat o błędzie
:W ten sposób możemy oznaczyć w programie niezmienniki, czyli warunki, które niezależnie od wartości zmiennych muszą pozostać prawdziwe. Jeśli asercja zawiedzie, oznacza to, że popełniliśmy błąd w algorytmie, piszemy sobie po pamięci (nadając zmiennym wartości, których nigdy nie powinny mieć) albo nastąpiła po drodze sytuacja wyjątkowa, na przykład związana z obsługą operacji wejścia-wyjścia.
:Można łatwo pozbyć się asercji, uwalniając kod od spowalniających obciążeń a jednocześnie nie musząc kasować wystąpień assert i zachowując je na przyszłość. Aby to zrobić, należy przed dołączeniem pliku nagłówkowego assert.h zdefiniować wartość NDEBUG.▼
▲:Można łatwo pozbyć się asercji, uwalniając kod od spowalniających obciążeń a jednocześnie nie musząc kasować wystąpień assert i zachowując je na przyszłość. Aby to zrobić, należy przed dołączeniem pliku nagłówkowego assert.h zdefiniować
#define assert(ignore) ((void)0)
:Makro assert jest redefiniowane za każdym dołączeniem pliku nagłówkowego assert.h.
===Wartość zwracana===
:Makro nie zwraca żadnej wartości.
===Przykład===
return
}
Program wypisze:▼
Assertion failed: err==0, file test.c, line 6▼
▲Program wypisze komunikat podobny do:
Natomiast jeśli uruchomimy:
return
}
nie pojawi się żaden komunikat o błędach.
|