En el fichero de cabecera estándar
<cassert>
aparece
assert()
, que es una macro de
depuración. Cuando se utiliza assert()
, se
le debe dar un argumento que es una expresión que usted está
«aseverando». El preprocesador genera código que
comprueba la aserción. Si la aserción no es cierta, el programa
parará después de imprimir un mensaje de error informando que la
aserción falló. Este es un ejemplo trivial:
//: C03:Assert.cpp // Use of the assert() debugging macro #include <cassert> // Contains the macro using namespace std; int main() { int i = 100; assert(i != 100); // Fails } ///:~
Listado 3.64. C03/Assert.cpp
La macro original es C Estándar, así que está disponible también
en el fichero de cabecera assert.h
.
Cuando haya terminado la depuración, puede eliminar el código generado por la macro escribiendo la siguiente línea:
#define NDEBUG
en el programa, antes de la inclusión de
<cassert>
, o definiendo
NDEBUG
en la línea de comandos del
compilador. NDEBUG
es una bandera que se
usa en <cassert>
para cambiar el código
generado por las macros.
Más adelante en este libro, verá algunas alternativas más
sofisticadas a assert()
.