Рубрики

Утверждения в C / C ++

Утверждения — это утверждения, используемые для проверки предположений, сделанных программистом. Например, мы можем использовать утверждение, чтобы проверить, равен ли указатель, возвращаемый функцией malloc (), NULL или нет.

Ниже приводится синтаксис для утверждения.

void assert( int expression ); 

Если выражение равно 0 (false), то выражение, имя файла исходного кода и номер строки отправляются со стандартной ошибкой, а затем вызывается функция abort ().

Например, рассмотрим следующую программу.

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

  

int main()

{

    int x = 7;

  

    / * Какой-то большой код между ними и скажем х

       случайно изменен на 9 * /

    x = 9;

  

    // Программист предполагает, что x равен 7 в остальной части кода

    assert(x==7);

  

    / * Остальной код * /

  

    return 0;

}

Выход

Assertion failed: x==7, file test.cpp, line 13 
This application has requested the Runtime to terminate it in an unusual 
way. Please contact the application's support team for more information.

Утверждение против обычной обработки ошибок
Утверждения в основном используются для проверки логически невозможных ситуаций. Например, их можно использовать для проверки состояния, которого ожидает код, прежде чем он начнет выполняться, или состояния после его завершения. В отличие от обычной обработки ошибок, утверждения обычно отключаются во время выполнения. Поэтому не стоит писать операторы asser (), которые могут вызывать побочные эффекты. Например, написать что-то вроде assert (x = 5) не очень хорошая идея, поскольку x изменяется, и это изменение не произойдет, когда утверждения отключены. Смотрите это для более подробной информации.

Игнорирование утверждений
В C / C ++ мы можем полностью удалить утверждения во время компиляции, используя препроцессор NODEBUG.

// Программа ниже работает нормально, потому что определен NDEBUG
# define NDEBUG
# include <assert.h>

  

int main()

{

    int x = 7;

    assert (x==5);

    return 0;

}

Вышеуказанная программа компилируется и работает нормально.

В Java утверждения не включены по умолчанию, и мы должны передать опцию движку времени выполнения, чтобы включить их.

Ссылка:
http://en.wikipedia.org/wiki/Assertion_%28software_development%29

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Утверждения в C / C ++

0.00 (0%) 0 votes