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 
);

Parámetros

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

Comentarios

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 puede definirse 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 (JIT) la depuración Just-In-Time.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 el marcador de _DEBUG ha sido definidas.

Requisitos

rutina

Encabezado necesario

assert

<assert.h>

Ejemplo

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
}
  
  

Equivalente en .NET Framework

System:: Diagnostics:: depuración:: Declarar

Vea también

Referencia

Control de errores (CRT)

Proceso y control ambiental

abort

raise

signal

_ASSERT, macros _ASSERTE

_DEBUG