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


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

Отслеживает ход выполнения приложения путем создания отчета отладки (только отладочная версия). Обратите внимание, что n определяет количество аргументов в args и может быть 0, 1, 2, 3, 4 или 5.

_RPTn( 
   reportType,
   format,
...[args]
); 
_RPTFn( 
   reportType,
   format,
   [args]
); 
_RPTWn( 
   reportType,
   format 
   [args]
); 
_RPTFWn( 
   reportType,
   format 
   [args]
);

Параметры

  • reportType
    Тип отчета: _CRT_WARN, _CRT_ERROR или _CRT_ASSERT.

  • format
    Строка управления форматом, которая используется для создания сообщения пользователя.

  • args
    Аргументы подстановки, используемые format.

Заметки

Все эти макросы принимают параметры reportTypeи format. Кроме того, они также могут принимать до четырех дополнительных аргументов, обозначенных числом, добавленным к имени макроса. Например, _RPT0 и _RPTF0 не принимает дополнительные аргументы, _RPT1 и _RPTF1 принимают arg1, _RPT2 и _RPTF2 принимают arg1 и arg2 и т. д.

Макросы _RPT и _RPTF похожи на функцию printf, поскольку их можно использовать для отслеживания хода выполнения приложения в процессе отладки. Однако эти макросы обеспечивают большую гибкость, чем printf, поскольку нет необходимости включать их в операторы #ifdef, чтобы предотвратить их вызов в итоговом построении приложения. Эта гибкость достигается с помощью макроса _DEBUG; макросы _RPT и _RPTF доступны только когда флаг _DEBUG установлен. Если _DEBUG не указан, вызовы этих макросов удаляются во время предварительной обработки.

Макросы _RPTW и _RPTFW являются версией для расширенных символов этих макросов. Они подобны wprintf и принимают в качестве аргументов строки расширенных символов.

Макросы _RPT вызывают функцию _CrtDbgReport для создания отчета по отладке с сообщением пользователя. Макросы _RPTW вызывают функцию _CrtDbgReportW для создания того же отчета с расширенными символами. Макросы _RPTF и _RPTFW создают отчеты отладки, где указан файл исходного кода и номер строки, где был вызван макрос отчета, в дополнение к сообщению пользователя. Сообщение пользователя создается путем замены аргументов arg[n] в строке format, используя те же правила, которые определены функцией printf.

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

Если вызывается макрос _RPT и при этом не вызывается ни _CrtSetReportMode, ни _CrtSetReportFile, то сообщения отображаются следующим образом.

Тип отчета

Назначение вывода

_CRT_WARN

Текст предупреждения не отображается.

_CRT_ERROR

Всплывающее окно. То же самое, как если бы _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); была задана.

_CRT_ASSERT

Эквивалентно _CRT_ERROR.

Когда место назначения - это окно сообщения отладки, и пользователь нажимает кнопку Повторить, _CrtDbgReport или _CrtDbgReportW возвращают 1, приводя к тому, что эти макросы запускают отладчик при условии, что JIT отладка включена. Дополнительные сведения об использование этих макросов в качестве механизма обработки ошибок отладки см. в разделе Using Macros for Verification and Reporting.

Существуют два других макроса, которые создают отчеты отладки. Макрос _ASSERT создает отчет, но только если его аргумент-выражение принимает значение FALSE. _ASSERTE выполняется точно так же, как и _ASSERT, но включает выражение в созданный отчет.

Требования

Макрос

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

Макросы _RPT

<crtdbg.h>

Макросы _RPTF

<crtdbg.h>

Макросы _RPTW

<crtdbg.h>

Макросы _RPTFW

<crtdbg.h>

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

Библиотеки

Только отладочные версии Библиотеки времени выполнения языка C.

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

Пример

См. пример в разделе _ASSERT.

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

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Процедуры отладки