_CrtSetReportFile

_CrtSetReportMode После указания _CRTDBG_MODE_FILEможно указать дескриптор файла для получения текста сообщения. _CrtSetReportFileтакже используется для _CrtDbgReport_CrtDbgReportW указания назначения текста (только отладочная версия).

Синтаксис

_HFILE _CrtSetReportFile(
   int reportType,
   _HFILE reportFile
);

Параметры

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

reportFile
Новый файл отчета для reportType.

Возвращаемое значение

При успешном завершении функция _CrtSetReportFile возвращает предыдущий файл отчета, заданный для типа отчета, который определяется параметром reportType. Если недопустимое значение передается для reportType, эта функция вызывает обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение разрешено продолжать, errno задано значение EINVAL, а функция возвращается _CRTDBG_HFILE_ERROR. Дополнительные сведения см. в разделе errno, _doserrno, _sys_errlist, и _sys_nerr.

Замечания

_CrtSetReportFile используется с _CrtSetReportMode функцией для определения назначения или назначения для определенного типа отчета, созданного _CrtDbgReport. При вызове _CrtSetReportMode для назначения _CRTDBG_MODE_FILE режима отчетности для определенного типа отчета также вызывается _CrtSetReportFile указание целевого файла или потока. Если _DEBUG это не определено, вызовы _CrtSetReportFile удаляются во время предварительной обработки.

В следующем списке показаны доступные варианты для reportFile и итогового _CrtDbgReportповедения. Эти параметры задаются в виде битовых флагов в файле Crtdbg.h.

  • Дескриптор файла

    Дескриптор файла, который будет служить местом назначения для сообщений. Попытки проверить допустимость дескриптора не предпринимаются. Дескриптор файла необходимо открыть и закрыть. Например:

    HANDLE hLogFile;
    hLogFile = CreateFile("c:\\log.txt", GENERIC_WRITE,
        FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,
        FILE_ATTRIBUTE_NORMAL, NULL);
    _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
    _CrtSetReportFile(_CRT_WARN, hLogFile);
    
    _RPT0(_CRT_WARN,"file message\n");
    CloseHandle(hLogFile);
    
  • _CRTDBG_FILE_STDERR

    Записывает в stderr сообщение, которое может быть переадресовано следующим образом:

    freopen( "c:\\log2.txt", "w", stderr);
    _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
    _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
    
    _RPT0(_CRT_ERROR,"1st message\n");
    
  • _CRTDBG_FILE_STDOUT

    Записывает в stdout сообщение, которые можно переадресовать.

  • _CRTDBG_REPORT_FILE

    Возвращает текущий режим отчетов.

Вы можете управлять файлом отчета, используемым каждым типом отчета отдельно. Например, можно указать, что reportType_CRT_ERROR отчеты выполняются stderrс reportType_CRT_ASSERT помощью определяемого пользователем дескриптора или потока отчетов.

Требования

Маршрут Обязательный заголовок Необязательный заголовок
_CrtSetReportFile <crtdbg.h> <errno.h>

Консоль не поддерживается в приложениях универсальная платформа Windows (UWP). Стандартные дескрипторы потока, связанные с консолью, stdinstdoutи stderr, должны быть перенаправлены перед тем, как функции времени выполнения C могут использовать их в приложениях UWP. Дополнительные сведения о совместимости см. в разделе Совместимость.

Библиотеки: только отладка версий библиотеки CRT.

См. также

Отладка подпрограмм