Exportar (0) Imprimir
Expandir todo
and
div
eof
not
or
xor
Expandir Minimizar
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

assert (CRT)

Evalúa una expresión y, cuando el resultado es false, se imprime un mensaje de diagnóstico y cancela el programa.

void assert( 
   int expression 
);

expression

Expresión (punteros incluida que se evalúa como cero o 0.

La macro de assert se utiliza normalmente para identificar errores lógicos durante el desarrollo de software implementando el argumento de expression evalúe false sólo cuando el programa funciona incorrectamente. Una vez completada la depuración, la comprobación de aserción se puede desactivar sin modificar el archivo de código fuente definiendo el identificador NDEBUG. NDEBUG se puede definir con una opción de la línea de comandos /D o con una directiva de #define . Si NDEBUG se define con #define, la directiva debe aparecer antes de que ASSERT.H se incluye.

assert imprime un mensaje de diagnóstico cuando expression se evalúa como false (0) y llama a anulación para finalizar la ejecución del programa. No se realiza ninguna acción si expression es true (cero). El mensaje de diagnóstico incluye la expresión incorrectos, el nombre del archivo de código fuente y el número de línea donde se produjo un error en la aserción.

El mensaje de diagnóstico se imprime en caracteres anchos. Así, funcionará como se espera incluso si hay caracteres Unicode en la expresión.

El destino del mensaje de diagnóstico depende del tipo de aplicación que llamó a la rutina. Las aplicaciones de consola reciben siempre el mensaje con stderr. En una aplicación basada en Windows, assert a la función de Windows MessageBox para crear un cuadro de mensaje para mostrar el mensaje junto con un botón de Aceptar . Cuando el usuario hace clic en Aceptar, las anulaciones de programa inmediatamente.

Cuando la aplicación se vincula con una versión de depuración de las bibliotecas en tiempo de ejecución, assert crea un cuadro de mensaje con tres botones: Anular, Reintentar, y Omitir. Si el usuario hace clic en Anular, las anulaciones de programa inmediatamente. Si el usuario hace clic en Reintentar, el depurador y el usuario puede depurar el programa si está habilitada la depuración just-in-time de (JIT). Si el usuario hace clic en Omitir, assert continúa con la ejecución normal: crear el cuadro de mensaje con el botón de Aceptar . Observe que haga clic en Omitir cuando existe una condición de error puede producir un comportamiento indefinido.

Para obtener más información sobre depuración de CRT, vea Técnicas de depuración de CRT.

La rutina de assert está disponible en las versiones de lanzamiento y depuración de las bibliotecas en tiempo de ejecución de C. Otras dos macros de aserción, _ASSERT y _ASSERTE, también están disponibles, pero evalúan sólo las expresiones pasadas a ellas cuando se ha definido el indicador de _DEBUG .

Rutina

Encabezado necesario

assert

<assert.h>

En este programa, la función de analyze_string utiliza la función de assert para probar varias condiciones relacionadas con la cadena y la longitud. Si no se superan las condiciones cualquiera de los, el programa imprime una indicación de mensaje lo que produjo el error.

// crt_assert.c
// compile with: /c
#include <stdio.h>
#include <assert.h>
#include <string.h>

void analyze_string( char *string );   // Prototype

int main( void )
{
   char  test1[] = "abc", *test2 = NULL, test3[] = "";

   printf ( "Analyzing string '%s'\n", test1 ); fflush( stdout );
   analyze_string( test1 );
   printf ( "Analyzing string '%s'\n", test2 ); fflush( stdout );
   analyze_string( test2 );
   printf ( "Analyzing string '%s'\n", test3 ); fflush( stdout );
   analyze_string( test3 );
}

// Tests a string to see if it is NULL, 
// empty, or longer than 0 characters.
void analyze_string( char * string )
{
   assert( string != NULL );        // Cannot be NULL
   assert( *string != '\0' );       // Cannot be empty
   assert( strlen( string ) > 2 );  // Length must exceed 2
}
Cadena analizadora “ABC”
Cadena analizadora “(null)”
La aserción: en cadena! = NULL, archivo crt_assert.c, línea 24

Esta aplicación solicitó la finalización del tiempo de ejecución de modo no habitual.
Póngase en contacto con el equipo de asistencia técnica de la aplicación para obtener más información.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft