assert.h

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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() виконається з помилкою.

Посилання

[ред. | ред. код]