assert - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
||
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)
Parametros
| condition | - | expresión de tipo escalar |
Valor de retorno
(ninguno)
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
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