_CrtSetReportMode
Задает назначение или назначения для определенного типа отчета, создаваемого _CrtDbgReport и всеми макросами, которые вызывают _CrtDbgReport, _CrtDbgReportW, например Макрос _ASSERT, _ASSERTE, Макрос _ASSERT, _ASSERTE, Макросы _RPT, _RPTF, _RPTW, _RPTFW и Макросы _RPT, _RPTF, _RPTW, _RPTFW (только отладочная версия).
int _CrtSetReportMode(
int reportType,
int reportMode
);
Параметры
reportType
Тип отчета: _CRT_WARN, _CRT_ERROR и _CRT_ASSERT.reportMode
Новый режим или режимы отчетов для reportType.
Возвращаемое значение
При успешном завершении _CrtSetReportMode возвращает предыдущий режим или режимы отчетов для определенного типа отчета в reportType. Если недопустимое значение передается как reportType или недопустимый режим определен для reportMode, _CrtSetReportMode вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если продолжение выполнения разрешено, эта функция устанавливает errno в значение EINVAL и возвращает -1. Дополнительные сведения см. в разделе errno, _doserrno, _sys_errlist, and _sys_nerr.
Заметки
_CrtSetReportMode определяет выходное назначение для _CrtDbgReport. Поскольку макросы _ASSERT, _ASSERTE, _RPT и _RPTF вызывают _CrtDbgReport, _CrtSetReportMode определяет выходное назначение текста, определенного этими макросами.
Если _DEBUG не определен, то вызовы _CrtSetReportMode удаляются во время предварительной обработки.
Если не вызывается _CrtSetReportMode для определения назначения вывода сообщений, используются следующие действия по умолчанию:
Ошибки и сбои проверочного утверждения направляются в окно сообщений отладчика.
Предупреждения из Windows-приложений отправляются в окно вывода отладчика.
Предупреждения из консольных приложений не отображаются.
В следующей таблице перечислены типы сообщений, определенные в Crtdbg.h.
Тип отчета |
Описание |
---|---|
_CRT_WARN |
Предупреждения, сообщения и сведения, не требующие немедленного внимания. |
_CRT_ERROR |
Ошибки, неустранимые проблемы и ситуации, которые требуют немедленного внимания. |
_CRT_ASSERT |
Сбои проверочного утверждения (выражения проверки, результат вычисления которых FALSE). |
Функция _CrtSetReportMode присваивает новый режим отчета, указанный в reportMode типу отчета, указанному в reportType, и возвращает ранее определенный режим отчета для reportType. В следующей таблице приведен список доступных вариантов для reportMode и результирующее поведение _CrtDbgReport. Эти параметры задаются в виде битовых флагов в Crtdbg.h.
Режим отчета |
Поведение _CrtDbgReport |
---|---|
_CRTDBG_MODE_DEBUG |
Пишет сообщение в окно вывода отладчика. |
_CRTDBG_MODE_FILE |
Пишет сообщение в предоставленный пользователем обработчик файлов. _CrtSetReportFile должен быть вызван, чтобы определить конкретные файл или поток для использования в качестве места назначения. |
_CRTDBG_MODE_WNDW |
Создает окно сообщения для отображения сообщения вместе с кнопками Abort, Retry и Ignore. |
_CRTDBG_REPORT_MODE |
Возвращает reportMode для заданного reportType: 1 _CRTDBG_MODE_FILE 2 _CRTDBG_MODE_DEBUG 4 _CRTDBG_MODE_WNDW |
Каждый тип отчета может быть использован с помощью одной, двух или трех моделей или без моделей вообще. Следовательно, можно иметь несколько назначений, заданных для одного типа отчета. Например, в следующем фрагменте кода сообщения о сбоях проверочного утверждения отправляются и в окно сообщений отладчика, и в stderr:
_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_WNDW );
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );
Кроме того, режимом или режимами отчетов можно управлять отдельно для каждого типа отчета. Например, можно указать, что reportType _CRT_WARN отправляется в вывод отладочной строки, а _CRT_ASSERT отображается с помощью окна сообщений отладчика и отправляется в stderr, как показано ранее.
Требования
Подпрограмма |
Обязательный заголовок |
Необязательный заголовок |
---|---|---|
_CrtSetReportMode |
<crtdbg.h> |
<errno.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость во введении.
Версии Библиотеки: Отладочные версии только для Функции библиотеки CRT.
Эквивалент в .NET Framework
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Для получения дополнительной информации см. Примеры вызовов неуправляемого кода.