Comme à usage minimum
Incluez denullpo.h dans chaque C/C++ source, mais il a besoin de cadres, autrement tous les macros dans le denullpo.h deviennent invalides.
Tout le cadre est écrit "#define" auparavant y compris denullpo.h.
- DENULLPO_TRAP
- Si cela est défini, le rappel de la découverte de l'erreur devient efficace.
- DENULLPO_SKIP
- Si cela est défini, Denullpo détecte des erreurs.
- Si ni DENULLPO_TRAP ni DENULLPO_SKIP est défini, Denullpo ne détecte pas d'erreurs.
- DENULLPO_4CC
- C'est une valeur pour indiquer qu'un exemple est valide.
- Si cela n'est pas défini, il est défini automatiquement à une valeur constante.
Na mancha que deveria conferir um ponteiro, dê em um ponteiro em
denullpo().
Lorsqu'un chien d'arrêt est NULL, Denullpo traite une erreur résolue.
Sample Code
/*=== évitez l'accès à un chien d'arrêt NULL avec denullpo() ===*/
#include <stdio.h>
/*=== Denullpo a besoin de cadre auparavant y compris denullpo.h ===*/
/*=== Vous pouvez enlever manutention de Denullpo lorsque vous changez cette ligne dans commentaire. ===*/
#define DENULLPO_SKIP
#include "denullpo.h"
int main(int argc,char *argv[]){
void* p=NULL;
int err=0;
p=malloc(128);
/*=== divise le traitement par un résultat du chèque d'un chien d'arrêt ===*/
if(denullpo(p)){
/*=== traiter lorsque c'est anormal ===*/
fprintf(stderr,"this is nullpo\n");
err=1;
}
else{
/*=== traiter lorsque c'est normal ===*/
// :
// :
// :
free(p);
p=NULL;
}
return err;
}
Il examine la validité d'exemple
Denullpo peut examiner la validité d'exemple en ajoutant un membre pour un code magique à une classe et un corps de structure.
Classe et structure d'une cible du chèque définissent un point de l'écriture d'un code magique dans DENULLPO_INITCHECKER.
Quand l'a créé dans l'exemple, il indique cet exemple valide en appelant
denullpo_setinit().
Et quand le détruit dans l'exemple, il indique cet exemple invalide en appelant
denullpo_setpurge().
À la tache qui devrait vérifier un chien d'arrêt, donnez-le dans un chien d'arrêt dans le
denullpo2().
Lorsqu'un chien d'arrêt est illégal, Denullpo traite une erreur résolue.
Sample Code
/*=== résistez à un appel de la méthode d'exemple illicite ===*/
#include <stdio.h>
#define DENULLPO_SKIP
#include "denullpo.h"
class FOO{
public:
/*=== définissez une variable pour remplir un cordon magique dans une classe ===*/
DENULLPO_INITCHECKER;
FOO(){
/*=== remplissez un cordon magique qui indique qu'il a initialisé ===*/
denullpo_setinit(this);
}
~FOO(){
/*=== remplissez un cordon magique qui indique qu'il a terminé ===*/
denullpo_setpurge(this);
}
void exec(){
/*=== traitez-le comme une erreur si cette méthode est appelée d'exceptez entre denullpo_setinit() et denullpo_setpurge() ===*/
if(denullpo2())return;
// :
// :
// :
}
};
Rappel de la découverte de l'erreur
le
denullpo() et
denullpo2() rendent habituellement immédiatement un résultat lorsqu'ils ont détecté une erreur.
Lorsque vous appelez
denullpo_settrap() et rappel de l'ensemble, le rappel est appelé lorsque Denullpo a détecté une erreur, et le résultat est reflété.
DENULLPO_TRAP doit être défini auparavant y compris un denullpo.h pour valider le rappel.
Sample Code
/*=== rendez effectif erreur qui manie d'un chien d'arrêt illicite ===*/
#include <stdio.h>
/*=== configurer pour valider le rappel ===*/
#define DENULLPO_TRAP
#include "denullpo.h"
int err=0;
/*=== traiter lorsque Denullpo a détecté une erreur ===*/
static unsigned __cdecl hook(void *p,eDenullpoReason reason){
fprintf(stderr,"nullpo is hooked\n");
err=1;
/*=== la valeur revenant devient juste renvoyer de la valeur de denullpo() ===*/
return 1;
}
int main(int argc,char *argv[]){
void* p=NULL;
/*=== mettre de rappel ===*/
denullpo_settrap(hook);
p=malloc(128);
/*=== Si un chien d'arrêt est NULL, Denullpo exécutent le rappel résolu. ===*/
if(!denullpo(p)){
/*=== traiter lorsque c'est normal ===*/
// :
// :
// :
free(p);
p=NULL;
}
return err;
}
Détails
Définitions
eDenullpoReason
- DENULLPO_NULL
- Le chien d'arrêt examiné est NULL.
- DENULLPO_INVALID
- L'exemple examiné est invalide.
Types de rappel
Rappel lorsque l'erreur est détectée.
Lorsqu'une erreur a été détectée, un ensemble de la fonction dans le
denullpo_settrap() est appelé.
Discussions
p | chien d'arrêt d'une cible de l'examen |
reason | base d'une erreur |
Revenant valeur
0 | Ce facteur de l'erreur a été résolu. |
1 | Ce facteur de l'erreur est encore laissé. |
Fonctions
obtenir un rappel de la découverte de l'erreur.
Revenant valeur
mettez un rappel de la découverte de l'erreur.
Discussions
trap | une fonction traiter comme rappel |
Revenant valeur
la dernière valeur du cadre |
Notes
Cette fonction n'est pas fil sûr.
appelez le rappel de la découverte de l'erreur.
Discussions
p | chien d'arrêt d'une cible de l'examen |
reason | base d'une erreur |
Revenant valeur
0 | Ce facteur de l'erreur a été résolu. |
1 | Ce facteur de l'erreur est encore laissé. |
unsigned denullpo_getinit(any* p)
obtenir une valeur de contrôleur de l'exemple
Discussions
Revenant valeur
valeur de contrôleur de l'exemple |
void denullpo_setinit(any* p)
notifiez contrôleur de l'exemple que l'exemple est initialisé
Discussions
Notes
Vous devez appeler ce macro pour chaque exemple pour devenir une cible de
denullpo2().
void denullpo_setpurge(any* p)
notifiez contrôleur de l'exemple que l'exemple est terminé
Discussions
Notes
Vous devez appeler ce macro pour chaque exemple pour devenir une cible de
denullpo2().
unsigned denullpo_chkinit(any* p)
examinez si l'exemple est initialisé
Discussions
Revenant valeur
0 | pas caractère anormal |
1 | caractère anormal |
Notes
Vous n'appelez pas habituellement directement ce macro. Vous appelez
denullpo2() afin que Denullpo examine l'exemple.
int denullpo(any* p)
examinez si un chien d'arrêt est NULL
Discussions
Revenant valeur
0 | NULL n'a pas été détecté |
1 | NULL a été détecté |
Notes
La fonction du rappel est appelée en cas de la découverte de l'erreur si a mis par une fonction du rappel dans le
denullpo_settrap().
int denullpo2(any* p)
examinez si un exemple est invalide
Discussions
Revenant valeur
0 | pas caractère anormal |
1 | caractère anormal |
Notes
La fonction du rappel est appelée en cas de la découverte de l'erreur si a mis par une fonction du rappel dans le
denullpo_settrap().