Macro de la biblioteca C -assert()
Biblioteca estándar de C - <assert.h>
Descripción
Macro de la biblioteca Cvoid assert(int expression)Permite que la información de diagnóstico se escriba en el archivo de error estándar; en otras palabras, se puede utilizar para añadir diagnósticos en programas C.
assert()Es una macro de la biblioteca estándar de C, definida en<assert.h>el archivo de cabecera. Se utiliza para comprobar en tiempo de ejecución si una expresión es verdadera. Si la expresión es falsa,assert()la macro genera un mensaje de error y termina la ejecución del programa.
assert() es muy útil para la depuración y las pruebas.
assert()Es una herramienta poderosa que ayuda a los desarrolladores a verificar condiciones durante la ejecución del programa y a proporcionar información de error detallada cuando no se cumplen.
Declaración
La siguiente es la declaración de la macro assert():
#include <assert.h> assert(expression);
Parámetros
- expression-- Una expresión condicional que deseas comprobar; puede ser una variable o cualquier expresión de C. Siexpressiones TRUE, assert() no realiza ninguna acción. Siexpressiones FALSE, assert() mostrará un mensaje de error en el error estándar stderr y terminará la ejecución del programa.
Si el valor de expression es falso (0), assert() generará un mensaje de error que contiene la siguiente información:
- Representación textual de la expresión que provocó el fallo de la aserción
- Nombre del archivo fuente
- Número de línea
- Nombre de la función (si está disponible)
Luego el programa llama a la función abort() para terminar la ejecución.
Valor de retorno
Esta macro no devuelve ningún valor.
Ejemplo
El siguiente ejemplo demuestra el uso de la macro assert().
Ejemplo
Compilemos y ejecutemos el programa anterior en modo interactivo, como se muestra a continuación:
请输入一个整数值: 11 输入的整数是: 11 请输入字符串: ejemplo 输入的字符串是: ejemplo
Deshabilitar aserciones
En versiones de lanzamiento, es posible que desees deshabilitar las aserciones para mejorar el rendimiento. Esto se puede lograr definiendo NDEBUG:
#define NDEBUG #include <assert.h>
Una vez definido NDEBUG, todas las macros assert() se preprocesan como una sentencia vacía y no se realiza ninguna comprobación.
Recomendaciones de uso
- Depuración: En las fases de desarrollo y depuración, el uso de
assert()puede ayudarte a detectar errores lógicos de forma temprana. - Documentación: Mediante
assert()se pueden expresar claramente las suposiciones y expectativas del programador sobre el código, lo cual es muy útil para el mantenimiento y la lectura del código. - Programación defensiva: Aunque
assert()no debe utilizarse para manejar errores de ejecución previsibles, es un medio eficaz para capturar errores de programación.
Consideraciones
- Rendimiento: En código crítico para el rendimiento, las aserciones pueden añadir una sobrecarga adicional, por lo que suelen deshabilitarse en versiones de lanzamiento.
- Manejo de errores:
assert()No debe utilizarse para manejar situaciones de error esperadas, sino para capturar errores del programador.