Yggdrasil Seeds : Trabajos del software : Language Select : Denullpo, the pointer checker : Denullpo

Denullpo


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

unsigned (*hDenullpoTrap)(void* p, eDenullpoReason reason)
Comunicación de vuelta cuando el error se descubre.
Cuando un error fue descubierto, un juego de la función en denullpo_settrap() se llama.
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

hDenullpoTrap denullpo_gettrap()
consiga una comunicación de vuelta de descubrimiento de error.
Valor volviendo
el valor de la escena
hDenullpoTrap denullpo_settrap(hDenullpoTrap trap)
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.
unsigned denullpo_exectrap(void* p, eDenullpoReason reason)
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
p
caso designado
Valor volviendo
valor de comprobador del caso
void denullpo_setinit(any* p)
notifique a comprobador del caso que el caso se inicializa
Argumentos
p
caso designado
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
p
caso designado
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
p
caso designado
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
p
indicador designado
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
p
caso designado
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().
Tiene que llamar denullpo_setinit() y denullpo_setpurge() a una posición apropiada para que de esta función se ocupe normalmente.

Plan futuro


DSHs PHPlib v0.1.0 (C)2006-9 Denullpo Smasher Hammerson