Cómo al uso mínimo
Incluya el denullpo.h en cada fuente de C/C++, pero necesita escenas, por otra parte todos los macros en denullpo.h se puesto no válido.
Toda la escena es escrito en "#define" antes de incluso el denullpo.h.
- DENULLPO_TRAP
- Si esto se define, la comunicación de vuelta de descubrimiento de error se pone eficaz.
- DENULLPO_SKIP
- Si esto se define, Denullpo descubre los errores.
- Si DENULLPO_TRAP ni DENULLPO_SKIP se define, Denullpo no descubre los errores.
- DENULLPO_4CC
- Es un valor para indicar que un caso es válido.
- Si esto no se define, se define automáticamente a un valor constante.
A la mancha que debe verificar un indicador, délo en un indicador en
denullpo().
Cuando un indicador es NULL, Denullpo procesa un error fijo.
Sample Code
/*=== evada el acceso a un indicador NULL con denullpo() ===*/
#include <stdio.h>
/*=== Denullpo necesita la escena antes incluso el denullpo.h ===*/
/*=== Puede quitar manejo de Denullpo cuando cambia esta línea en el comentario. ===*/
#define DENULLPO_SKIP
#include "denullpo.h"
int main(int argc,char *argv[]){
void* p=NULL;
int err=0;
p=malloc(128);
/*=== divide el proceso por un resultado del cheque de un indicador ===*/
if(denullpo(p)){
/*=== procesando cuando es anormal ===*/
fprintf(stderr,"this is nullpo\n");
err=1;
}
else{
/*=== procesando cuando es normal ===*/
// :
// :
// :
free(p);
p=NULL;
}
return err;
}
Examina la validez de caso
Denullpo puede examinar la validez de caso agregando a un miembro para un código mágico a una clase y un cuerpo de la estructura.
La clase y estructura de un blanco del cheque definen un punto de la escritura de un código mágico en DENULLPO_INITCHECKER.
Cuando lo creó en caso, indica ese caso válido llamando el
denullpo_setinit().
Y cuando lo destruye en caso, indica ese caso del inválido llamando el
denullpo_setpurge().
Der de Bei Stelle, muérase el einen el Zeiger überprüfen sollte, geben el es de Sie en einem Zeiger en
denullpo2().
Cuando un indicador es ilegal, Denullpo procesa un error fijo.
Sample Code
/*=== resístase una llamada del método de caso ilícito ===*/
#include <stdio.h>
#define DENULLPO_SKIP
#include "denullpo.h"
class FOO{
public:
/*=== defina una variable para rellenar un cordón mágico en una clase ===*/
DENULLPO_INITCHECKER;
FOO(){
/*=== rellene un cordón mágico que indica que inicializó ===*/
denullpo_setinit(this);
}
~FOO(){
/*=== rellene un cordón mágico que indica que terminó ===*/
denullpo_setpurge(this);
}
void exec(){
/*=== trátelo como un error si este método se llama de excepto entre el denullpo_setinit() y denullpo_setpurge() ===*/
if(denullpo2())return;
// :
// :
// :
}
};
Comunicación de vuelta de descubrimiento de error
el
denullpo() y
denullpo2() normalmente devuelven inmediatamente un resultado cuando descubrieron un error.
Cuando llama
denullpo_settrap() y comunicación de vuelta del juego, la comunicación de vuelta se llama cuando Denullpo descubrió un error, y el resultado se refleja.
DENULLPO_TRAP debe definirse antes incluso un denullpo.h para validar la comunicación de vuelta.
Sample Code
/*=== lleve a cabo error que maneja de un indicador ilícito ===*/
#include <stdio.h>
/*=== poner para validar la comunicación de vuelta ===*/
#define DENULLPO_TRAP
#include "denullpo.h"
int err=0;
/*=== procesando cuando Denullpo descubrió un error ===*/
static unsigned __cdecl hook(void *p,eDenullpoReason reason){
fprintf(stderr,"nullpo is hooked\n");
err=1;
/*=== el valor volviendo apenas se vuelve devolviendo valor de denullpo() ===*/
return 1;
}
int main(int argc,char *argv[]){
void* p=NULL;
/*=== poner de comunicación de vuelta ===*/
denullpo_settrap(hook);
p=malloc(128);
/*=== Si un indicador es NULL, Denullpo ejecutan la comunicación de vuelta fija. ===*/
if(!denullpo(p)){
/*=== procesando cuando es normal ===*/
// :
// :
// :
free(p);
p=NULL;
}
return err;
}
Detalles
Definiciones
eDenullpoReason
Info de error de indicador de la comunicación de vuelta de
hDenullpoTrap.
- DENULLPO_NULL
- El indicador examinado es NULL.
- DENULLPO_INVALID
- El caso examinado es no válido.
Tipos de la comunicación de vuelta
Comunicación de vuelta cuando el error se descubre.
Argumentos
p | indicador de un blanco del examen |
reason | base de un error |
Valor volviendo
0 | Este factor del error fue resuelto. |
1 | Este factor del error todavía queda. |
Funciones
consiga una comunicación de vuelta de descubrimiento de error.
Valor volviendo
ponga una comunicación de vuelta de descubrimiento de error.
Argumentos
trap | una función para tratar como comunicación de vuelta |
Valor volviendo
el último valor de la escena |
Notas
Esta función no es ningún hilo seguro.
llame la comunicación de vuelta de descubrimiento de error.
Argumentos
p | indicador de un blanco del examen |
reason | base de un error |
Valor volviendo
0 | Este factor del error fue resuelto. |
1 | Este factor del error todavía queda. |
unsigned denullpo_getinit(any* p)
consiga un valor de comprobador del caso
Argumentos
Valor volviendo
valor de comprobador del caso |
void denullpo_setinit(any* p)
notifique a comprobador del caso que el caso se inicializa
Argumentos
Notas
Debe pedir este macro cada caso para volverse un blanco de
denullpo2().
void denullpo_setpurge(any* p)
notifique a comprobador del caso que el caso se termina
Argumentos
Notas
Debe pedir este macro cada caso para volverse un blanco de
denullpo2().
unsigned denullpo_chkinit(any* p)
examine si el caso se inicializa
Argumentos
Valor volviendo
0 | no la anormalidad |
1 | anormalidad |
Notas
Normalmente no llama directamente este macro. Llama el
denullpo2() para que Denullpo examine el caso.
int denullpo(any* p)
examine si un indicador es NULL
Argumentos
Valor volviendo
0 | El NULL no fue descubierto |
1 | El NULL fue descubierto |
Notas
La función de la comunicación de vuelta se llama en caso del descubrimiento del error si puso por una función de la comunicación de vuelta en
denullpo_settrap().
int denullpo2(any* p)
examine si un caso es no válido
Argumentos
Valor volviendo
0 | no la anormalidad |
1 | anormalidad |
Notas
La función de la comunicación de vuelta se llama en caso del descubrimiento del error si puso por una función de la comunicación de vuelta en
denullpo_settrap().