Condividi tramite


_RPT, _RPTF, _RPTW, macro _RPTFW

Tiene traccia dello stato di un'applicazione mediante la generazione di un report di debug (solo versione di debug). Il n suffisso specifica il numero di argomenti in argse può essere 0, 1, 2, 3, 4 o 5.

Sintassi

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

Parametri

reportType
Tipo di report: _CRT_WARN, _CRT_ERROR o _CRT_ASSERT.

format
Stringa di controllo del formato usata per creare il messaggio utente.

args
Argomenti di sostituzione usati da format.

Osservazioni:

Tutte queste macro accettano i reportType parametri e format . Inoltre, potrebbero anche accettare fino a quattro argomenti, indicati dal numero aggiunto al nome della macro. Ad esempio, _RPT0 e _RPTF0 non accettare altri argomenti e _RPT1 _RPTF1 accettare arg1_RPT2 e _RPTF2 accettare arg1 e arg2e così via.

Le _RPT macro e _RPTF sono simili alla printf funzione, perché possono essere usate per tenere traccia dello stato di avanzamento di un'applicazione durante il processo di debug. Tuttavia, queste macro sono più flessibili rispetto printf al fatto che non devono essere racchiuse nelle istruzioni #ifdef per impedire che vengano chiamate in una compilazione definitiva di un'applicazione. Questa flessibilità viene ottenuta tramite la _DEBUG macro. Le _RPT macro e _RPTF sono disponibili solo quando viene definito il _DEBUG flag. Quando _DEBUG non viene definita, le chiamate a queste macro vengono rimosse durante la pre-elaborazione.

Le macro _RPTW e _RPTFW sono versioni a caratteri wide di queste macro. Sono simili a wprintf e accettano stringhe di caratteri wide come argomenti.

Le _RPT macro chiamano la _CrtDbgReport funzione per generare un report di debug con un messaggio utente. Le macro _RPTW chiamano la funzione _CrtDbgReportW per generare lo stesso report con caratteri wide. Le macro _RPTF e _RPTFW creano un report di debug con il file di origine e il numero di riga in cui è stata chiamata la macro di report, oltre al messaggio utente. Il messaggio utente viene creato sostituendo gli arg[n] argomenti nella format stringa, usando le stesse regole definite dalla printf funzione.

_CrtDbgReport o _CrtDbgReportW genera il report di debug e ne determina la destinazione o destinazioni, in base alle modalità del report e al file definito per reportType. Le _CrtSetReportMode funzioni e _CrtSetReportFile vengono usate per definire le destinazioni per ogni tipo di report.

Se viene chiamata una _RPT macro e _CrtSetReportMode _CrtSetReportFile non è stata chiamata, i messaggi vengono visualizzati come segue:

Tipo di report Destinazione di output
_CRT_WARN Il testo dell'avviso non viene visualizzato.
_CRT_ERROR Finestra popup. Come se fosse stato specificato _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW);.
_CRT_ASSERT Uguale a _CRT_ERROR.

Quando la destinazione è una finestra di messaggio di debug e l'utente sceglie il pulsante _CrtDbgReport Riprova o _CrtDbgReportW restituisce 1. Questo valore restituito fa sì che queste macro avviino il debugger, se il debug JIT (Just-In-Time) è abilitato. Per altre informazioni sull'uso di queste macro come meccanismo di gestione degli errori di debug, vedere Macro per la creazione di report.

Sono disponibili altre due macro che generano un report di debug. La _ASSERT macro genera un report, ma solo quando il relativo argomento di espressione restituisce FALSE. _ASSERTE è esattamente come _ASSERT, ma include l'espressione non riuscita nel report generato.

Requisiti

Macro Intestazione obbligatoria
Macro _RPT <crtdbg.h>
Macro _RPTF <crtdbg.h>
Macro _RPTW <crtdbg.h>
Macro _RPTFW <crtdbg.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Librerie

Solo le versioni di debug delle librerie di runtime di C.

Sebbene queste macro siano disponibili quando si include crtdbg.h, per l'esecuzione, l'applicazione deve collegarsi a una delle librerie di debug, perché queste macro chiamano altre funzioni di runtime.

Esempio

Vedere l'esempio nell'articolo _ASSERT .

Vedi anche

Routine di debug