¿Cómo usar la función de afirmación bajo el sistema de linux?

  

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.

Copyright © Conocimiento de Windows All Rights Reserved