_RPT, , _RPTF_RPTW, _RPTFW Makros

Verfolgt den Status einer Anwendung durch Generieren eines Debugberichts (nur in der Debugversion). Das n Suffix gibt die Anzahl der Argumente in args, und kann 0, 1, 2, 3, 4 oder 5 sein.

Syntax

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

Parameter

reportType
Berichtstyp: _CRT_WARN, _CRT_ERROR oder _CRT_ASSERT.

format
Formatsteuerelementzeichenfolge, mit der die Benutzermeldung erstellt wird.

args
Von format verwendete optionale Ersatzargumente.

Hinweise

Alle diese Makros übernehmen die und format die reportType Parameter. Darüber hinaus können sie auch bis zu vier weitere Argumente einnehmen, die durch die zahl gekennzeichnet sind, die an den Makronamen angefügt wurde. Nehmen Sie z. B _RPT0_RPTF0. keine Argumente mehr, _RPTF1_RPT1 nehmen Sie _RPTF2 und _RPT2 nehmen arg1arg1und arg2usw.

Die _RPT Makros und _RPTF Makros ähneln der printf Funktion, da sie zum Nachverfolgen des Fortschritts einer Anwendung während des Debuggingprozesses verwendet werden können. Diese Makros sind jedoch flexibler, als printf weil sie nicht in #ifdef Anweisungen eingeschlossen werden müssen, um zu verhindern, dass sie in einem Einzelhandelsbuild einer Anwendung aufgerufen werden. Diese Flexibilität wird durch die Verwendung des _DEBUG Makros erreicht. Die Makros und _RPTF Makros _RPT sind nur verfügbar, wenn die _DEBUG Kennzeichnung definiert ist. Wenn _DEBUG sie nicht definiert ist, werden Aufrufe dieser Makros während der Vorverarbeitung entfernt.

Die _RPTW- und _RPTFW-Makros sind Breitzeichenversionen dieser Makros. Sie verhalten sich wie wprintf und nehmen Argumente mit Breitzeichen entgegen.

Die _RPT Makros rufen die _CrtDbgReport Funktion auf, um einen Debugbericht mit einer Benutzernachricht zu generieren. Die _RPTW-Makros rufen die _CrtDbgReportW-Funktion auf, um den gleichen Berichts mit Breitzeichen zu generieren. Die _RPTF- und _RPTFW-Makros erstellen einen Debugbericht mit der Quelldatei und der Zeilennummer, in denen das Berichtsmakro zusätzlich zur Benutzermeldung aufgerufen wurde. Die Benutzernachricht wird durch Substituieren der arg[n] Argumente in die format Zeichenfolge erstellt, wobei die gleichen Regeln verwendet werden, die von der printf Funktion definiert sind.

_CrtDbgReport oder _CrtDbgReportW generiert den Debugbericht und bestimmt seine Ziele, basierend auf den aktuellen Berichtsmodi und der für reportType definierten Datei. Die _CrtSetReportMode Und _CrtSetReportFile Funktionen werden verwendet, um die Ziele für jeden Berichtstyp zu definieren.

Wenn ein _RPT Makro aufgerufen wird und _CrtSetReportMode_CrtSetReportFile nicht aufgerufen wurde, werden Die Meldungen wie folgt angezeigt:

Report Typ Ausgabeziel
_CRT_WARN Warnungstext wird nicht angezeigt.
_CRT_ERROR Ein Popupfenster. So als ob _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); angegeben worden wäre.
_CRT_ASSERT Wie in _CRT_ERROR.

Wenn es sich bei dem Ziel um ein Debugmeldungsfenster handelt und der Benutzer die Schaltfläche "Wiederholen " auswäht oder _CrtDbgReport_CrtDbgReportW "1" zurückgibt. Dieser Rückgabewert bewirkt, dass diese Makros den Debugger starten, wenn das JiT-Debuggen (Just-in-Time) aktiviert ist. Weitere Informationen zur Verwendung dieser Makros als Debugfehlerbehandlungsmechanismus finden Sie unter Makros für die Berichterstellung.

Zwei andere Makros sind vorhanden, die einen Debugbericht generieren. Das _ASSERT Makro generiert einen Bericht, aber nur, wenn sein Ausdrucksargument ausgewertet wird FALSE. _ASSERTE ist genau so, _ASSERTaber enthält den fehlgeschlagenen Ausdruck im generierten Bericht.

Anforderungen

Makro Erforderlicher Header
_RPT-Makros <crtdbg.h>
_RPTF-Makros <crtdbg.h>
_RPTW-Makros <crtdbg.h>
_RPTFW-Makros <crtdbg.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Bibliotheken

Nur Debugversionen von C-Laufzeitbibliotheken

Obwohl diese Makros bei der Ausführung crtdbg.hverfügbar sind, muss die Anwendung eine Verknüpfung mit einer der Debugbibliotheken herstellen, da diese Makros andere Laufzeitfunktionen aufrufen.

Beispiel

Sehen Sie sich das Beispiel im Artikel an _ASSERT .

Siehe auch

Debugroutinen