The Wayback Machine - https://web.archive.org/web/20211007064156/https://ru.cppreference.com/w/cpp/error/assert
Пространства имён
Варианты
Действия

assert

Материал из cppreference.com
< cpp‎ | error

 
C++
Поддержка компилятором
Автономные и размещённые реализации
Язык
Заголовки стандартной библиотеки
Требования к именованию
Макросы тестирования функциональности (C++20)
Поддержка языка
Библиотека концептов (C++20)
Библиотека диагностики
Библиотека общих утилит
Библиотека строк
Библиотека контейнеров
Библиотека итераторов
Библиотека диапазонов (C++20)
Библиотека алгоритмов
Библиотека численных данных
Библиотека ввода/вывода
Библиотека локализаций
Регулярные выражения (C++11)
Атомарные операции (C++11)
Библиотека поддержки потоков (C++11)
Библиотека файловой системы (C++17)
Технические спецификации
Указатель символов
Внешние библиотеки
 
Библиотека утилит
Поддержка языка
Поддержка типа (базовые типы, RTTI, свойства типов)    
Макросы тестирования функциональности библиотеки (C++20)
Управление динамической памятью
Программные утилиты
Обработка ошибок
Поддержка сопрограмм (C++20)
Вариативные функции
(C++17)
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)  
(C++20)
Операции обмена и типа
(C++14)
(C++11)

(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

Элементарные преобразования строк
(C++17)
(C++17)

Stacktrace
 
Обработка ошибок
Обработка исключений
Сбои обработки исключений
(до C++17)
(до C++17)
(C++11)(до C++17)
(до C++17)
Коды ошибок
Коды ошибок
Категории исключений
(ТС TM)
Утверждения
assert
Средства system_error
(C++11)
(C++11)
 
Определено в заголовочном файле <cassert>
#ifdef NDEBUG

#define assert(condition) ((void)0)
#else
#define assert(condition) /*implementation defined*/

#endif
Определение assert макросов зависит от другого макроса, NDEBUG, который не определен в стандартной библиотеке.
Оригинал:
The definition of the macro assert depends on another macro, NDEBUG, which is not defined by the standard library.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если NDEBUG определяется как имя макроса в точке в исходном коде, где <cassert> включен, то assert ничего не делает.
Оригинал:
If NDEBUG is defined as a macro name at the point in the source code where <cassert> is included, then assert does nothing.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если NDEBUG не определен, то assert проверки, если ее аргумент (которые должны быть скалярного типа) сравнивает равна нулю. Если это произойдет, assert выводит конкретной реализации диагностической информации на стандартный вывод ошибок и вызывает std::abort. Диагностическую информацию необходимо включить в текст expression, а также значений стандартных макросов __FILE__, __LINE__, и стандартные __func__ переменной.
Оригинал:
If NDEBUG is not defined, then assert checks if its argument (which must have scalar type) compares equal to zero. If it does, assert outputs implementation-specific diagnostic information on the standard error output and calls std::abort. The diagnostic information is required to include the text of expression, as well as the values of the standard macros __FILE__, __LINE__, and the standard variable __func__.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Параметры

condition —
Выражение скалярного типа
Оригинал:
expression of scalar type
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Возвращаемое значение

(Нет)

[править] Пример

#include <iostream>
// uncomment to disable assert()
// #define NDEBUG
#include <cassert>
 
int main()
{
    assert(2+2==4);
    std::cout << "Execution continues past the first assert\n";
    assert(2+2==5);
    std::cout << "Execution continues past the second assert\n";
}

Вывод:

Execution continues past the first assert
test: test.cc:8: int main(): Assertion `2+2==5' failed.
Aborted

[править] См. также

объявление static_assert(C++11) выполняет проверку утверждения во время компиляции[править]
вызывает аварийное завершение программы (без очистки)
(функция) [править]
Источник — «https://ru.cppreference.com/mwiki/index.php?title=cpp/error/assert&oldid=40297»