_RPT
, _RPTF
, _RPTW
, _RPTFW
macros
Realiza el seguimiento del progreso de la aplicación generando un informe de depuración (únicamente una versión de depuración). El n
sufijo especifica el número de argumentos de args
y puede ser 0, 1, 2, 3, 4 o 5.
Sintaxis
_RPTn(
reportType,
format,
...[args]
);
_RPTFn(
reportType,
format,
[args]
);
_RPTWn(
reportType,
format
[args]
);
_RPTFWn(
reportType,
format
[args]
);
Parámetros
reportType
Tipo de informe: _CRT_WARN
, _CRT_ERROR
o _CRT_ASSERT
.
format
Cadena de control de formato usada para crear el mensaje de usuario.
args
Argumentos de sustitución usados por format
.
Comentarios
Todas estas macros toman los reportType
parámetros y format
. Además, también pueden tomar hasta cuatro argumentos más, indicados por el número anexado al nombre de la macro. Por ejemplo, _RPT0
y _RPTF0
no toman más argumentos, _RPT1
y _RPTF1
toman arg1
, _RPT2
y toman arg1
y arg2
_RPTF2
, etc.
Las _RPT
macros y _RPTF
son similares a la printf
función , ya que se pueden usar para realizar un seguimiento del progreso de una aplicación durante el proceso de depuración. Sin embargo, estas macros son más flexibles que printf
porque no es necesario incluirlas en instrucciones #ifdef para evitar que se llamen en una compilación comercial de una aplicación. Esta flexibilidad se logra mediante la _DEBUG
macro; las _RPT
macros y _RPTF
solo están disponibles cuando se define la _DEBUG
marca. Cuando no se define _DEBUG
, las llamadas a estas macros se quitan durante el preprocesamiento.
Las macros _RPTW
y _RPTFW
son versiones de caracteres anchos de estas macros. Son como wprintf
y toman las cadenas de caracteres anchos como argumentos.
Las _RPT
macros llaman a la _CrtDbgReport
función para generar un informe de depuración con un mensaje de usuario. Las macros _RPTW
llaman a la función _CrtDbgReportW
para generar el mismo informe con caracteres anchos. Las macros _RPTF
y _RPTFW
crean un informe de depuración con el archivo de origen y el número de línea donde se llamó a la macro del informe, además del mensaje de usuario. El mensaje de usuario se crea sustituyendo los arg[n]
argumentos en la format
cadena mediante las mismas reglas definidas por la printf
función .
_CrtDbgReport
o _CrtDbgReportW
genera el informe de depuración y determina sus destinos en función de los modos de informe actuales y del archivo definido para reportType
. Las funciones _CrtSetReportMode
y _CrtSetReportFile
se usan para definir los destinos de cada tipo de informe.
Si se llama a una _RPT
macro y _CrtSetReportMode
_CrtSetReportFile
no se ha llamado a , los mensajes se muestran de la siguiente manera:
Tipo de informe | Destino de salida |
---|---|
_CRT_WARN |
No se muestra el texto de advertencia. |
_CRT_ERROR |
Ventana emergente. Lo mismo que si se hubiera especificado _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW); . |
_CRT_ASSERT |
Igual que _CRT_ERROR . |
Cuando el destino es una ventana de mensaje de depuración y el usuario elige el botón _CrtDbgReport
Reintentar o _CrtDbgReportW
devuelve 1. Este valor devuelto hace que estas macros inicien el depurador, si la depuración Just-In-Time (JIT) está habilitada. Para obtener más información sobre el uso de estas macros como mecanismo de control de errores de depuración, consulte Macros para informes.
Existen otras dos macros que generan un informe de depuración. La _ASSERT
macro genera un informe, pero solo cuando su argumento de expresión se evalúa como FALSE
. _ASSERTE
es exactamente igual _ASSERT
que , pero incluye la expresión con errores en el informe generado.
Requisitos
Macro | Encabezado necesario |
---|---|
_RPT macros |
<crtdbg.h> |
_RPTF macros |
<crtdbg.h> |
_RPTW macros |
<crtdbg.h> |
_RPTFW macros |
<crtdbg.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Bibliotecas
Solo versiones de depuración de las bibliotecas en tiempo de ejecución de C.
Aunque estas macros están disponibles cuando se incluye crtdbg.h
, para ejecutarse, la aplicación debe vincularse con una de las bibliotecas de depuración, ya que estas macros llaman a otras funciones en tiempo de ejecución.
Ejemplo
Consulte el ejemplo del _ASSERT
artículo.