Mientras alguien que entienda el programa sabe afirmar, escríbalo en VC en Windows. Después de utilizar afirmación, configúrelo para depurar o liberar en el IDE, el compilador ignorará automáticamente la afirmación. Sin embargo, bajo Linux, debe agregar -DNDEBUG al comando compilar, y el sistema no compilará el aserto cuando compile. De lo contrario, el programa puede ser interrumpido por asertar cuando se ejecuta. ¿Cómo usar la función de afirmación bajo el sistema Linux? Permítanme hablar sobre el método de uso de la función assert en el sistema Linux.
siguientes pasos:
macro prototipo afirman definido en "assert.h", cuya función es devolver una condición de error si lo es, la ejecución del programa se termina, prototipo de definición: < Br>
#include "assert.h"
void assert (int expresión);
El efecto de asert es evaluar la expresión ahora si su valor es falso (es decir, 0 ), luego imprime un mensaje de error a stderr,
y luego finaliza el programa llamando a abortar.
Consulte la siguiente lista de programas badptr.c:
#include "stdio.h"
#include "assert.h"
#include "stdlib.h"
int main (void)
{
FILE * fp;
fp = fopen (" test.txt ", " w "); //Abra un archivo de forma que pueda escribirse, si no existe, cree un archivo con el mismo nombre
assert (fp); //Por lo tanto, no habrá ningún error aquí
fclose (fp);
fp = fopen (" noexitfile.txt ", " r "); //Abre un archivo como de solo lectura, no abre el archivo si no existe
assert (fp); //Así que aquí hay un error
fclose (fp); //El programa nunca se ejecutará aquí
return 0;
}
[root @ localhost error_process] # gcc badptr.c
[root @ localhost error_process] #. /a.out
a.out: badptr.c: 14: main: Assertion `fp ‘ failed.
Abandoned
La desventaja de usar assert es que es frecuente Las llamadas pueden afectar en gran medida el rendimiento del programa, agregando sobrecarga adicional.
Después de la depuración, puede desactivar la llamada asertiva insertando #define NDEBUG antes de la declaración que contiene #include "asser.h". El código de ejemplo es el siguiente:
#include "stdio.h
#define NDEBUG
#include "assert.h"
Resumen de uso y notas:
1) Verificar el ingreso al inicio de la función La legalidad de los parámetros
Por ejemplo:
int resetBufferSize (int nNewSize)
{
//Función: cambiar el tamaño del búfer,
//parámetros: nNewSize nueva longitud del búfer
//valor de retorno: la longitud actual del búfer
//Descripción: mantener la información original sin cambios nNewSize "= 0 significa borrar el búfer
assert (nNewSize /> = 0);
assert (nNewSize << = MAX_BUFFER_SIZE);
. . .
}
2) Cada afirmación solo prueba una condición, porque cuando se prueban múltiples condiciones al mismo tiempo, si la afirmación falla, es imposible determinar visualmente qué condición falló.
Bien: afirmar (nOffset) = 0 &&nOffset + nSize “= m_nInfomationSize);
Bien: assert (nOffset》 = 0);
assert (nOffset + nSize << = m_nInfomationSize 3) no se puede usar la declaración para cambiar el entorno, ya que asertar solo funciona en DEBUG, si lo hace, encontrará problemas cuando el programa se esté ejecutando
Error: assert (i ++ "100)
Esto se debe a que si se produce un error, como i = 100 antes de la ejecución, esta sentencia no se ejecutará, entonces el comando i ++ no se ejecutará.
Correcto: afirmar (i <100)
i ++;
4) afirmar y la siguiente declaración debe estar en blanco para formar un sentido de coherencia lógica y visual
5) En algunos lugares, aseverar no puede reemplazar el filtro condicional
Lo anterior es todo el contenido del uso del método de función asertura bajo el sistema Linux. Si aún no sabes cómo usar la función de afirmación en el sistema Linux, ¡echa un vistazo al contenido anterior! Después de leerlo, sabrá cómo usar la función de afirmación. Los usuarios interesados pueden ir y averiguarlo.
En los sistemas Linux pueden abrir múltiples Shell, pero Shell está funcionando per
A veces, los archivos importantes se almacenan en su computadora, y los usuarios no
Algunos usuarios tienen sistemas duales con Ubuntu y Win10 instalados en sus comput
Eclipse es una plataforma de desarrollo de extensión basada en Java. Recientemente, han respondido l
Linux cómo usar el comando sed para reemplazar la cadena
Herramienta de captura de pantalla de Linux habilidades de operación de escroto
Linux find nombrando rápida encontrar envenenamiento archivo de operación ejemplo
Cómo usar los comandos de Linux para ver el uso de la CPU
Ubuntu 12.04 elimina las puntas de extensión de Gnome Shell
¿Cómo instalar las extensiones Eclipse y PyDev en Ubuntu 14.04?
Cómo Linux puede ver el número de conexiones de 80 puertos a través del comando netstat
Cómo poner los archivos eliminados por el comando rm de Linux en la papelera
Consejos para configurar IPv4 en sistemas Ubuntu
Ubuntu instala PlayOnLinux paso
¿Qué debo hacer si Ncurses muestra chino confuso bajo Linux?
Cómo cambiar al método de entrada fcitx en Ubuntu Sublime Text 2
Instale el código de error del sistema Win7 0x800700B7 cómo hacerlo
Cómo resolver el problema de que la computadora XP no se puede apagar en el caso de
Habilidades esenciales para el sistema Win8
El sistema Win7 como enrutador inalámbrico para utilizar el método de configuración
Netease cloud music ¿cómo cancelar la cuenta?
Consejos de inicio rápido de Linux
Win8 activa la herramienta de restauración de respaldo. La activación no teme perder
Azulejo de ecualización rápida de ventanas múltiples de escritorio de Windows 8