Compartir a través de


¿Cómo se usan las expresiones de Trace-If?

Para ayudarle a comprender cómo se usan Trace-If expresiones, se proporciona un ejemplo de estas expresiones que muestran el uso y la sintaxis de las instrucciones "begin_wpp config". En este ejemplo se hace referencia a una función TRACE_RETURN, que registra un evento si la expresión FAILED(HR) es true.

Si FAILED(HR) es true, suponga que hay un archivo de origen que tiene el estado ULONG y se registrará un evento llamando a 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)

En el ejemplo anterior, observe que, TRACE_RETURN se define entre las líneas begin_wpp config y end_wpp. A continuación, esta definición va seguida de la macro PRE/POST y las definiciones ENABLED y LOGGER.

Los delimitadores begin_wpp config y end_wpp definen un bloque de configuración analizado por el preprocesador. WPP debe examinar el archivo que contiene la definición del bloque de configuración. Este archivo se especifica con el parámetro -scan:file.extension.

Nota Para obtener información sobre -scan y otras opciones de RUN_WPP , vea Preprocesador de WPP.

En la lista siguiente se proporciona más información sobre cada instrucción del bloque de configuración de ejemplo:

USEPREFIX
Define una cadena de formato de prefijo que se usará cuando se registra el evento. En el ejemplo, se usa STDPREFIX. Para conocer los valores disponibles con STDPREFIX, consulte Cómo cambiar la salida del prefijo en cada línea de seguimiento?

USESUFFIX
Define una cadena de formato de sufijo que se usará cuando se registra el evento.

FUNC
Define el nombre y la firma de la función de seguimiento. En el ejemplo, la función toma un parámetro y no tiene ninguna cadena de formato.

Para obtener otro ejemplo de expresiones de Trace-If, vea la sección Cómo incluir una instrucción de seguimiento en una macro de C/C++.