Compartilhar via


Como as expressões Trace-If são usadas?

Para ajudá-lo a entender como as expressões Trace-If são usadas, fornecemos um exemplo dessas expressões que demonstra o uso e a sintaxe de instruções "begin_wpp config". Este exemplo refere-se a uma função TRACE_RETURN, que registra um evento se a expressão FAILED(HR) for verdadeira.

Se FAILED(HR) for true, suponha que haja um arquivo de origem que tenha status ULONG e um evento será registrado chamando TRACE_RETURN(Status).

//MACRO: TRACE_RETURN
//
//begin_wpp config
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
//end_wpp

#define WPP_LEVEL_EXP_PRE(LEVEL, HR) {if (FAILED(HR)) {
#define WPP_LEVEL_EXP_POST(LEVEL, HR) ;}}
#define WPP_LEVEL_EXP_ENABLED(LEVEL, HR) WPP_LEVEL_ENABLED(LEVEL)
#define WPP_LEVEL_EXP_LOGGER(LEVEL, HR) WPP_LEVEL_LOGGER(ERROR)

No exemplo anterior, observe que, TRACE_RETURN é definido entre as linhas de configuração begin_wpp e end_wpp. Essa definição é seguida pela macro PRE/POST e pelas definições ENABLED e LOGGER.

Os delimitadores begin_wpp configuração e end_wpp definem um bloco de configuração analisado pelo pré-processador. O arquivo que contém a definição do bloco de configuração deve ser verificado pelo WPP. Esse arquivo é especificado com o parâmetro -scan:file.extension.

Nota Para obter informações sobre -scan e outras opções de RUN_WPP , consulte Pré-processador WPP.

A lista a seguir fornece mais informações sobre cada instrução no bloco de configuração de exemplo:

USEPREFIX
Define uma cadeia de caracteres de formato de prefixo a ser usada quando o evento é registrado. No exemplo, STDPREFIX é usado. Para valores disponíveis com STDPREFIX, confira Como fazer alterar a saída do prefixo em cada linha de rastreamento?

USESUFFIX
Define uma cadeia de caracteres de formato de sufixo a ser usada quando o evento é registrado.

FUNC
Define o nome e a assinatura da função de rastreamento. No exemplo, a função usa um parâmetro e nenhuma cadeia de caracteres de formato.

Para obter outro exemplo de expressões Trace-If, consulte a seção Como fazer incluir uma instrução de rastreamento em uma macro C/C++? .