assert
Definido en el archivo de encabezado <assert.h>
|
||
#ifdef NDEBUG #define assert(condition) ((void)0) |
||
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
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) | |
Documentación de C++ para assert
|