assert.h
assert.h — заголовний файл стандартної бібліотеки мови програмування С, в якому оголошується макрос препроцесора мови С assert(). Цей макрос реалізує висловлювання, котре може використовуватись для отримання припущень зроблених програмою.
| Заголовні файли C |
|---|
Макрос 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 на OpenGroup