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


_ASSERT _ASSERTE - макрос

Вычисление выражения и создайте отчет об отладке, когда результат False (отладка версия).

_ASSERT( 
   booleanExpression 
);
_ASSERTE( 
   booleanExpression 
);

Параметры

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

Заметки

_ASSERT и _ASSERTE макросы предоставляют приложению с чистого и простой механизм для проверки предположений в процессе отладки.Они очень гибки, потому что им не нужно заключать в пределах #ifdef выписки для предотвращения их из розничном вызываться в построении приложения.Такая гибкость достигается с помощью _Отладка макрос._ASSERT и _ASSERTE доступен, только если _DEBUG указывает.После _DEBUG обращения к данным не определяет макрос удалите во время предварительной обработки.

_ASSERT и _ASSERTE оцените них booleanExpression аргумент и когда результат false (0), они выводятся диагностическое сообщение, и вызов _CrtDbgReportW создать отчет об отладке._ASSERT макрос выводится простое диагностическое сообщение, пока _ASSERTE включает строковое представление выражения ошибки в сообщении.Эти макросы не выполняют никаких действий, если booleanExpression результатом которого является ненулевое значение.

_ASSERT и _ASSERTE вызовите _CrtDbgReportW, который приводит к тому, что весь вывод находиться в расширенных символах. _ASSERTE введите знак юникода в правильности booleanExpression.

Поскольку _ASSERTE макрос указывает выражение сбоя в созданном отчете, ней позволяет пользователю определить проблемы без обращаться к исходному коду приложения.Однако недостатком существует в том, что каждое выражение предполагаемое by _ASSERTE включает в выходном файле (отладка) версии приложения как строковая константа.Поэтому, если большой объем позвонены к _ASSERTEэти выражения могут значительно увеличить размер выбранного выходного файла.

Если не указан в противном случае с _CrtSetReportMode и _CrtSetReportFile функции сообщения появляются в контекстное меню количество диалоговых окон для установки:

_CrtSetReportMode(CRT_ASSERT, _CRTDBG_MODE_WNDW);

_CrtDbgReport OR _CrtDbgReportW создает отчет об отладке и определяет его назначение или назначения на основании текущих режиме отчета или режимах и в файле, определенных для _CRT_ASSERT тип отчета.По умолчанию сбой проверочного утверждения и ошибки, направляются в окно сообщения отладки._CrtSetReportMode и _CrtSetReportFile функции, используемые для указания назначения для каждого типа отчета.

Если назначением является окно сообщения отладки и щелкните пользователь Повторить кнопки _CrtDbgReport OR _CrtDbgReportW возвращает 1, вызывать _ASSERT и _ASSERTE макросы для запуска отладчика при условии, что по требованию (JIT) отладка включена.

Дополнительные сведения о процессе создания отчетов, см. _CrtDbgReport, _CrtDbgReportW функция.Дополнительные сведения о разрешении ошибок утверждения и использовании этих макросов, как механизм обработки ошибок отладки см. в разделах С помощью макросов для проверки и отчетности.

_RPT, _RPTF debug - макрос также доступен для формирования отчета о отладки, но они не вычисляется выражение._RPT макросы создают простой отчет._RPTF макросы содержат файл-источник и номер линии, где макрос отчета был вызван в созданном отчете.Помимо _ASSERTE макросы ANSI assert программу можно использовать для проверки логики программы.Эта процедура доступна в обеих версиях отладки и выпуска библиотек.Версия расширенных символов этих макросов (доступный_RPTWn" _RPTFWn).Версия расширенных символов идентичны узким версиям символа, за исключением того, что широкие символьные строки используются для всех параметров и выходной строки.

Как _ASSERT и _ASSERTE макросы и получаются путем включения Crtdbg.h приложение необходимо связать с одной из следующих библиотек, поскольку эти макросы вызывающие другие функции времени выполнения.

  • Libcmtd.lib
    Многопоточной статическая библиотека, отладочная версия.

  • Msvcrtd.lib
    Библиотека импорта для Msvcr90d.dll, отладочная версия.

Требования

Макрос

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

_ASSERT

<crtdbg.h>

_ASSERTE

<crtdbg.h>

Пример

В этой программе, в позвонены _ASSERT и _ASSERTE макросы чтобы проверить условие string1 == string2.Если условие не выполняется, эти макросы типа диагностическое сообщение._RPTn и _RPTFn группа в составе макросы также работается в этой программе, в качестве альтернативы printf функция.

// crt_ASSERT_macro.c
// compile with: /D_DEBUG /MTd /Od /Zi /link /verbose:lib /debug
//
// This program uses the _ASSERT and _ASSERTE debugging macros.
//

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <crtdbg.h>

int main()
{
   char *p1, *p2;

   // The Reporting Mode and File must be specified
   // before generating a debug report via an assert
   // or report macro.
   // This program sends all report types to STDOUT.
   _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
   _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
   _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
   _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT);
   _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
   _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);

   // Allocate and assign the pointer variables.
   p1 = (char *)malloc(10);
   strcpy_s(p1, 10, "I am p1");
   p2 = (char *)malloc(10);
   strcpy_s(p2, 10, "I am p2");

   // Use the report macros as a debugging
   // warning mechanism, similar to printf.
   // Use the assert macros to check if the 
   // p1 and p2 variables are equivalent.
   // If the expression fails, _ASSERTE will
   // include a string representation of the
   // failed expression in the report.
   // _ASSERT does not include the
   // expression in the generated report.
   _RPT0(_CRT_WARN,
       "Use the assert macros to evaluate the expression p1 == p2.\n");
   _RPTF2(_CRT_WARN, "\n Will _ASSERT find '%s' == '%s' ?\n", p1, p2);
   _ASSERT(p1 == p2);

   _RPTF2(_CRT_WARN, "\n\n Will _ASSERTE find '%s' == '%s' ?\n",
          p1, p2);
   _ASSERTE(p1 == p2);

   _RPT2(_CRT_ERROR, "'%s' != '%s'\n", p1, p2);

   free(p2);
   free(p1);

   return 0;
}
  
  
  
  
  

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

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

См. также

Ссылки

Подпрограммы отладка

_RPT, _RPTF, _RPTW, макросы _RPTFW