Espacios de nombres
Variantes
Acciones

assert

De cppreference.com
< c‎ | error
 
 
Gestión de errores
Los códigos de error
Original:
Error codes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Los códigos de error
Las afirmaciones
Original:
Assertions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
assert
 
Definido en el archivo de encabezado <assert.h>
#ifdef NDEBUG

#define assert(condition) ((void)0)
#else
#define assert(condition) /*definido en implementacion*/

#endif

La definición de la macro assert depende de otra macro, NDEBUG, que no está definida por la biblioteca estándar.

Si NDEBUG está definido como un nombre de macro en el punto del código fuente donde <assert.h> está incluido, entonces assert no hace nada.

Si NDEBUG no está definido, assert comprueba si su argumento (que debe tener tipo escalar) es igual a cero. Si lo hace, assert produce información de diagnóstico específica de la implementación sobre la salida de error estándar y llama a abort()}. La información de diagnóstico debe incluir el texto de expresión, así como los valores de las macros estándar. __FILE__, __LINE__, y la variable predefinida __func__. (desde C99)

Contenido

[editar] Parametros

condition - expresión de tipo escalar

[editar] Valor de retorno

(ninguno)

[editar] Ejemplo

#include <stdio.h>
// descomente para desactivar assert()
// #define NDEBUG
#include <assert.h>
#include <math.h>
 
int main(void)
{
    double x = -1.0;
    assert(x >= 0.0);
    printf("sqrt(x) = %f\n", sqrt(x));   
 
    return 0;
}

Salida:

con NDEBUG no definido:
a.out: main.cpp:10: main: Assertion `x >= 0.0' failed.
 
con NDEBUG definido:
sqrt(x) = -nan

[editar] Referencias

  • Standard C11 (ISO/IEC 9899:2011):
  • 7.2.1.1 The assert macro (p: 186-187)
  • Standard C99 (ISO/IEC 9899:1999):
  • 7.2.1.1 The assert macro (p: 169)
  • Standard C89/C90 (ISO/IEC 9899:1990):
  • 4.2.1.1 The assert macro

[editar] Véase también

causa la terminación anormal del programa (sin limpiarlo)
(función) [editar]