assert.h — заголовний файл стандартної бібліотеки мови програмування С, в якому оголошується макрос assert()
. Цей макрос реалізує висловлювання, котре може використовуватись для отримання припущень зроблених програмою.
Макрос assert()
додає до програми процедуру діагностики. Після виконання, якщо визначення хибне (тобто, порівняння рівне 0), assert() пише інформацію про виклик, котрий виконався з помилкою на stderr і викликає функцію abort()
. Інформація, котра пишеться на stderr включає у себе:
- текст визначення, рівного 0
- ім'я файлу з джерельним кодом (the predefined macro __FILE__)
- рядок у файлу з джерельним текстом (the predefined macro __LINE__)
Використання
Для того, щоб відключити перевірку не обов'язково вилучати з коду або коментувати оголошення макроса, достатньо лиш оголосити ще один макрос -- NDEBUG у програмі перед #include <assert.h>
, тоді оголошення макроса assert()
матиме такий вигляд:
#define assert(ignore)((void) 0)
а тому ніяк не впливатиме на роботу програми.
Макрос assert()
реалізований у вигляді макроса, а не функції. Якщо макрос assert забраний для можливості викликати саму функцію assert, то правильне функціонування коду не гарантується.
Приклад коду
#include <stdio.h> #include <assert.h> int main (void) { FILE *fd; fd = fopen ("file.txt", "r"); assert (fd); fclose (fd); return 0; }
У даному прикладі макрос assert()
спрацює у випадку, якщо функція fopen()
виконається з помилкою.
Посилання
- assert.h [ 13 жовтня 2008 у Wayback Machine.] на
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
assert h zagolovnij fajl standartnoyi biblioteki movi programuvannya S v yakomu ogoloshuyetsya makros assert Cej makros realizuye vislovlyuvannya kotre mozhe vikoristovuvatis dlya otrimannya pripushen zroblenih programoyu Makros assert dodaye do programi proceduru diagnostiki Pislya vikonannya yaksho viznachennya hibne tobto porivnyannya rivne 0 assert pishe informaciyu pro viklik kotrij vikonavsya z pomilkoyu na stderr i viklikaye funkciyu abort Informaciya kotra pishetsya na stderr vklyuchaye u sebe tekst viznachennya rivnogo 0 im ya fajlu z dzherelnim kodom the predefined macro FILE ryadok u fajlu z dzherelnim tekstom the predefined macro LINE VikoristannyaDlya togo shob vidklyuchiti perevirku ne obov yazkovo viluchati z kodu abo komentuvati ogoloshennya makrosa dostatno lish ogolositi she odin makros NDEBUG u programi pered include lt assert h gt todi ogoloshennya makrosa assert matime takij viglyad define assert ignore void 0 a tomu niyak ne vplivatime na robotu programi Makros assert realizovanij u viglyadi makrosa a ne funkciyi Yaksho makros assert zabranij dlya mozhlivosti viklikati samu funkciyu assert to pravilne funkcionuvannya kodu ne garantuyetsya Priklad kodu include lt stdio h gt include lt assert h gt int main void FILE fd fd fopen file txt r assert fd fclose fd return 0 U danomu prikladi makros assert spracyuye u vipadku yaksho funkciya fopen vikonayetsya z pomilkoyu Posilannyaassert h 13 zhovtnya 2008 u Wayback Machine na