Assert función en el uso de C ++

macro Prototype aserción definida en <assert.h> en su función si devuelve una condición de error, la ejecución del programa se termina.

Prototipo de definición:

#include <assert.h> 
void assert (expresión int);

 Afirmar el papel es calcular la expresión de expresión, si es falso (es decir, 0), entonces Xianxiang stderr imprimir un mensaje de error, y luego terminar el programa llamando al aborto.

La razón tuvo que abandonar la aserción uso () que afectan en gran medida el rendimiento del programa de la frecuente invocación, una sobrecarga adicional. Después de la puesta en marcha, mediante la inserción antes de la instrucción #define NDEBUG comprende #include <assert.h> para desactivar la llamada afirman, el código de ejemplo:

#include <stdio.h> 
#define NDEBUG es 
#include <la assert.h> 
1) verificar la legitimidad de los argumentos que se pasan en el comienzo de la función como.:
resetBufferSize int (int nNewSize) 
{ 
  // Función: Cambiar el tamaño del búfer, 
  @ parámetros: nNewSize nueva longitud del búfer 
  // Valor de retorno: La longitud del búfer actual 
  // Nota: el contenido original manteniéndose inalterado nNewSize <= 0 se borra tampón 
  Assert (nNewSize> = 0); 
  Assert (nNewSize <= MAX_BUFFER_SIZE); 
  ... 
}

 2) cada aserción única prueba una condición, porque al mismo tiempo comprobar más de una condición, si el error de aserción, no intuitiva para determinar qué condiciones fallan, tales como:

  malo:

assert (nOffset> = 0 && nOffset + nTamaño <= m_nInfomationSize);

  buena:

assert (nOffset> = 0); 
assert (nOffset + nTamaño <= m_nInfomationSize);

 3) no se puede utilizar para cambiar el estado del medio ambiente, porque sólo en DEBUG afirmar una fuerza, en caso de hacerlo, tendrá problemas con el programa en una operación real, tales como:

  error:

assert (i ++ <100);

  Esto es porque si se produce un error, como por ejemplo i = 100, entonces esta declaración no se ejecutará antes de la ejecución, a continuación, i ++ no se ejecuta este comando.

  correcto:

assert (i <100); 
 i ++;

 4) afirmar y la siguiente declaración deberían línea en blanco, para formar un sentido coherente y lógica de la visión.

 5) En algunos lugares, afirman no puede sustituir a la condición de filtro.

    aserción se utiliza para evitar errores obvios, en lugar de tratar las excepciones. Los errores y excepciones no son lo mismo, no debe producirse el error, la anomalía es inevitable. lenguaje C puede ser manejado por condición de excepción juicio, otros idiomas tienen sus propios mecanismos de manejo de excepciones.

    Una muy simple de usar afirman que la regla es, en el comienzo de la utilización del método o función, si es necesario considerar cuidadosamente si a su uso en el medio de ella debe ser. El método de comenzar el inicio de un proceso no funciona, a problemas de la función en el proceso de implementación son casi siempre excepciones.

Supongo que te gusta

Origin www.cnblogs.com/pesuedream/p/12546534.html
Recomendado
Clasificación