_RPT
, _RPTF
, _RPTW
_RPTFW
, Macros
Rastreia o progresso de um aplicativo gerando um relatório de depuração (somente versão de depuração). O n
sufixo especifica o número de argumentos em args
, e pode ser 0, 1, 2, 3, 4 ou 5.
Sintaxe
_RPTn(
reportType,
format,
...[args]
);
_RPTFn(
reportType,
format,
[args]
);
_RPTWn(
reportType,
format
[args]
);
_RPTFWn(
reportType,
format
[args]
);
Parâmetros
reportType
Tipo de relatório: _CRT_WARN
, _CRT_ERROR
ou _CRT_ASSERT
.
format
Cadeia de caracteres de controle de formato usada para criar a mensagem do usuário.
args
Argumentos de substituição usados por format
.
Comentários
Todas essas macros usam os reportType
parâmetros e format
. Além disso, eles também podem usar até mais quatro argumentos, representados pelo número acrescentado ao nome da macro. Por exemplo, _RPT0
e _RPTF0
não aceite mais argumentos, _RPT1
e _RPTF1
pegue arg1
, _RPT2
e _RPTF2
pegue arg1
e arg2
, e assim por diante.
As _RPT
macros e _RPTF
são semelhantes à printf
função, pois podem ser usadas para acompanhar o progresso de um aplicativo durante o processo de depuração. No entanto, essas macros são mais flexíveis do que printf
porque não precisam ser colocadas entre instruções #ifdef para evitar que sejam chamadas em uma compilação de varejo de um aplicativo. Essa flexibilidade é obtida usando a _DEBUG
macro; as _RPT
macros e _RPTF
só estão disponíveis quando o _DEBUG
sinalizador é definido. Quando _DEBUG
não está definido, as chamadas a essas macros são removidas durante o pré-processamento.
As macros _RPTW
e _RPTFW
são versões de caracteres largos dessas macros. Elas são como wprintf
e adotam cadeias de caracteres largos como argumentos.
As _RPT
macros chamam a _CrtDbgReport
função para gerar um relatório de depuração com uma mensagem do usuário. As macros _RPTW
chamam a função _CrtDbgReportW
para gerar o mesmo relatório com caracteres largos. As macros _RPTF
e _RPTFW
criam um relatório de depuração com arquivo de origem e o número de linha em que a macro de relatório foi chamada, além da mensagem do usuário. A mensagem do usuário é criada substituindo os arg[n]
argumentos na format
cadeia de caracteres, usando as mesmas regras definidas pela printf
função.
_CrtDbgReport
ou _CrtDbgReportW
geram o relatório de depuração e determinam seu destino com base nos modos de relatório atual e no arquivo definido para reportType
. As funções _CrtSetReportMode
e _CrtSetReportFile
são usadas para definir os destinos de cada tipo de relatório.
Se uma _RPT
macro for chamada e _CrtSetReportMode
_CrtSetReportFile
não tiver sido chamada, as mensagens serão exibidas da seguinte maneira:
Tipo de relatório | Destino de saída |
---|---|
_CRT_WARN |
O texto de aviso não é exibido. |
_CRT_ERROR |
Uma janela pop-up. Mesmo que se _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); tivesse sido especificado. |
_CRT_ASSERT |
Mesmo que _CRT_ERROR . |
Quando o destino é uma janela de mensagem de depuração e o usuário escolhe o botão _CrtDbgReport
Repetir ou _CrtDbgReportW
retorna 1. Esse valor retornado faz com que essas macros iniciem o depurador, se a depuração JIT (just-in-time) estiver habilitada. Para obter mais informações sobre como usar essas macros como um mecanismo de tratamento de erros de depuração, consulte Macros para relatórios.
Há duas outras macros que geram um relatório de depuração. A _ASSERT
macro gera um relatório, mas somente quando seu argumento de expressão é avaliado como FALSE
. _ASSERTE
é exatamente como _ASSERT
, mas inclui a expressão com falha no relatório gerado.
Requisitos
Macro | Cabeçalho necessário |
---|---|
Macros _RPT |
<crtdbg.h> |
Macros _RPTF |
<crtdbg.h> |
Macros _RPTW |
<crtdbg.h> |
Macros _RPTFW |
<crtdbg.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Bibliotecas
Somente versões de depuração de bibliotecas de tempo de execução C.
Embora essas macros estejam disponíveis quando você inclui crtdbg.h
, para executar, o aplicativo deve ser vinculado a uma das bibliotecas de depuração, pois essas macros chamam outras funções de tempo de execução.
Exemplo
Veja o exemplo no _ASSERT
artigo.