_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 arg1
arg1
und arg2
usw.
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, _ASSERT
aber 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.
Libraries
Nur Debugversionen von C-Laufzeitbibliotheken
Obwohl diese Makros bei der Ausführung crtdbg.h
verfü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
.