_RPT, _RPTF, _RPTW, _RPTFW Macros
Tiene traccia dello stato dell'applicazione generando un report di debug (solo versione di debug). Si noti che n specifica il numero di argomenti in args e può essere 0, 1, 2, 3, 4, o 5.
_RPTn(
reportType,
format,
...[args]
);
_RPTFn(
reportType,
format,
[args]
);
_RPTWn(
reportType,
format
[args]
);
_RPTFWn(
reportType,
format
[args]
);
Parametri
reportType
Tipo di rapporto: _CRT_WARN, _CRT_ERROR, o _CRT_ASSERT.format
Controllo del formato della stringa utilizzata per creare il messaggio utente.args
Argomenti di sostituzione utilizzati da format.
Note
Tutte queste macro accettano parametri di reportTypee di format Possono inoltre accettare quattro argomenti ulteriori, significati dal numero aggiunto al nome delle macro. Ad esempio, _RPT0 e _RPTF0 non accettano argomenti aggiuntivi, _RPT1 e _RPTF1 accetta arg1, _RPT2 e _RPTF2 accetta arg1 e arg2, e così via.
Le macro di _RPTF e di _RPT sono simili alla funzione di printf, in quanto possono essere utilizzate per tenere traccia dello stato dell'applicazione durante il processo di debug. Tuttavia, queste macro sono più flessibili di printf perché non devono essere racchiuse in istruzioni di #ifdef per evitarne dalle chiamate in una build finale di un'applicazione. Questa flessibilità viene ottenuta utilizzando la macro di _DEBUG ; le macro di _RPTF e di _RPT sono disponibili solo quando il flag di _DEBUG è definito. Quando _DEBUG non viene definito, le chiamate a queste macro vengono rimosse durante la pre-elaborazione.
Le macro di _RPTFW e di _RPTW sono versioni a caratteri estesi delle macro. Sono le wprintf e accettano stringhe di caratteri estesi come argomenti.
Le macro di _RPT chiamano la funzione _CrtDbgReport per generare un report di debug con un messaggio utente. Le macro di _RPTW chiamano la funzione _CrtDbgReportW per generare lo stesso rapporto con i caratteri estesi. Le macro di _RPTFW e di _RPTF creano un report di debug al file di origine e il numero di riga in cui la macro del rapporto è stata chiamata, oltre al messaggio utente. Il messaggio utente viene creato sostituendo gli argomenti di arg[n] nella stringa di format, utilizzando le stesse regole definite dalla funzione printf.
_CrtDbgReport o _CrtDbgReportW genera il report di debug e delle relative destinazioni in base alle modalità Report e sul file correnti specificati per reportType. Le funzioni di _CrtSetReportFile e di _CrtSetReportMode vengono utilizzate per definire le destinazioni per ogni tipo di rapporto.
Se una macro di _RPT è denominata né _CrtSetReportMode né _CrtSetReportFile è stato chiamato, i messaggi vengono visualizzati come segue.
Tipo di Rapporto |
Destinazione di output |
---|---|
_CRT_WARN |
Il testo dell'avviso non verrà visualizzata. |
_CRT_ERROR |
Viene visualizzata una finestra Come se _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); sia stato specificato. |
_CRT_ASSERT |
Uguale a _CRT_ERROR. |
Quando la destinazione è una finestra di messaggio di debug e l'utente sceglie il pulsante Riprova, _CrtDbgReport o _CrtDbgReportW restituisce 1, inducendo queste macro di avviare il debugger, a condizione che il debug just-in-time (JIT) sia abilitato. Per ulteriori informazioni sull'utilizzo di queste macro come meccanismo di gestione degli errori del debug, consultare Utilizzando le macro per la verifica e la creazione di rapporti.
Altre due macro esistenti che generano un report di debug. La macro di _ASSERT generano un rapporto, ma solo quando il relativo argomento di espressione restituisce FALSE. _ASSERTE è esattamente come _ASSERT, ma include l'espressione non riuscita nel rapporto generato.
Requisiti
Macro |
Intestazione obbligatoria |
---|---|
_RPT macro |
<crtdbg.h> |
_RPTF macro |
<crtdbg.h> |
_RPTW macro |
<crtdbg.h> |
_RPTFW macro |
<crtdbg.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Librerie
Solo versioni di debug di Librerie di runtime C.
Sebbene queste siano macro e vengano ottenute includendo Crtdbg.h, l'applicazione deve collegarsi a una delle librerie di debug perché queste macro chiamano altre funzioni di runtime.
Esempio
Vedere l'esempio nell'argomento _ASSERT.
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.