Поделиться через


assert (CRT)

Вычисляет выражение и, если результат falseвведите диагностическое сообщение и прерывает выполнение программы.

void assert( 
   int expression 
);

Параметры

  • expression
    Выражения указателей (включая), которое оценивает значение ненулевое, либо 0.

Заметки

assert макрос обычно используется для указания логических ошибок во время разработки с помощью программы expression аргумент, который должен иметь false в том случае, если программа работает неправильно.После завершения проверки утверждения отладки можно отключить, не изменяя исходный файл указав идентификатор NDEBUG.NDEBUG может быть указан с a /D параметр командной строки или с a #define директива.If NDEBUG определяет с #defineдиректива должна указываться раньше, чем ASSERT.H включается.

assert выводит сообщение, когда диагностика expression равно false (0) и вызовы Прервать завершает выполнение программы.Если никакие действия не предпринимаются expression существует true (не равно нулю).Выражение ошибки, диагностическое сообщение включает имя исходного файла и номер линии, где ошибка утверждения.

Диагностическое сообщение выводится в расширенных символах.Таким образом, он будет работать ожидаемым образом даже если символ юникода в выражении.

Назначение диагностические сообщения зависит от типа приложения, который вызвал процедуру.Консольные приложения всегда получают сообщения до конца stderr.В приложении Windows assert вызывает окна MessageBox функция для создания окна сообщений для отображения сообщений, а также ОК кнопка.Когда пользователь щелкает ОКпрограмма прерывается немедленно.

При связывании с отладочной версией библиотеки времени выполнения assert создает окно сообщения с 3 кнопками. Прервать" Повторитьи Пропустить.Если пользователь щелкнет Прерватьпрограмма прерывается немедленно.Если пользователь щелкнет Повторитьотладчик вызывается, и пользователь может отлаживать программы по требованию (JIT), если отладка включена.Если пользователь щелкнет Пропустить" assert переход с соответствующим обычным выполнением. создание окно сообщения с ОК кнопка.Обратите внимание, что щелкнуть Пропустить если условие ошибки, существует может привести к появлению неназначенной расширения функциональности.

Дополнительные сведения об отладке CRT см. в разделе методы отладки CRT.

assert процедура доступна в выпуске и отладочные версии библиотек времени выполнения c.2 Остальных макросов утверждения, _ASSERT и _ASSERTEтакже доступны, но они имеют только выражения, передаваемые им при _Отладка пометить был определен.

Требования

Процедура

Обязательный заголовок

assert

<assert.h>

Пример

в этой программе, analyze_string функция использует assert функция для тестирования несколько условий, связанных со строкой и длины.Если какие-либо условия завершаются ошибкой, то программа выводит отображение сообщений, вызвавшее сбой.

// crt_assert.c
// compile with: /c
#include <stdio.h>
#include <assert.h>
#include <string.h>

void analyze_string( char *string );   // Prototype

int main( void )
{
   char  test1[] = "abc", *test2 = NULL, test3[] = "";

   printf ( "Analyzing string '%s'\n", test1 ); fflush( stdout );
   analyze_string( test1 );
   printf ( "Analyzing string '%s'\n", test2 ); fflush( stdout );
   analyze_string( test2 );
   printf ( "Analyzing string '%s'\n", test3 ); fflush( stdout );
   analyze_string( test3 );
}

// Tests a string to see if it is NULL, 
// empty, or longer than 0 characters.
void analyze_string( char * string )
{
   assert( string != NULL );        // Cannot be NULL
   assert( *string != '\0' );       // Cannot be empty
   assert( strlen( string ) > 2 );  // Length must exceed 2
}
  
  

Эквивалент в .NET Framework

System:: Устранение неполадок:: отладка:: Assert

См. также

Ссылки

Обработка исключений (CRT)

Процесс и управление среды

abort

raise

signal

_ASSERT _ASSERTE - макрос

_DEBUG