Перейти к содержанию

Последнее обновление:2026-10-12

C++ утверждения assert

Об авторе:

Личный официальный аккаунт:

wechat

1.Первый пример с утверждением

Утверждение (assertion) — это макрос, а не функция.

Прототип макроса assert определён в (C) и (C++). Его роль такова: если его условие возвращает ошибку, выполнение программы прекращается.

Отключить assert можно, определив NDEBUG, но это нужно сделать в начале исходного кода, до include .

void assert(int expression);

Пример кода: assert.c

#include <stdio.h> 
#include <assert.h> 

int main() 
{ 
    int x = 7; 

    /*  Some big code in between and let's say x  
    is accidentally changed to 9  */
    x = 9; 

    // Programmer assumes x to be 7 in rest of the code 
    assert(x==7); 

    /* Rest of the code */

    return 0; 
} 
Вывод:
assert: assert.c:13: main: Assertion 'x==7' failed.
Как видно, в выводе указываются файл исходного кода, номер строки и место ошибки!

2.Утверждения и обычная обработка ошибок

  • Утверждения в основном используются для проверки логически невозможных ситуаций.

Например, их можно применять для проверки состояния, которое код ожидает до начала выполнения, или для проверки состояния после завершения работы. В отличие от обычной обработки ошибок, утверждения обычно отключаются в релизной сборке.

  • Чтобы игнорировать утверждения, добавьте в начало кода:
    #define NDEBUG          // 加上这行,则 assert 不可用
    

Пример кода: ignore_assert.c

Похожие темы

Комментарии