#define ValidateReadPtr(p,cb) 0
Je ne peux pas penser à un cas d'utilisation pour ce genre de macro, qu'en pensez-vous?À quoi sert une telle macro?
#define ValidateReadPtr(p,cb) 0
Je ne peux pas penser à un cas d'utilisation pour ce genre de macro, qu'en pensez-vous?À quoi sert une telle macro?
Je ne peux trouver ValidateReadPtr()
macro dans l'en-tête wxdebug.h
pour le SDK Windows Mobile (même si MSDN indique que cela fait partie des API DirectShow).
Dans wxdebug.h
il est défini comme:
#define ValidateReadPtr(p,cb) \
{if(IsBadReadPtr((PVOID)p,cb) == TRUE) \
DbgBreak("Invalid read pointer");}
Je pense que dans votre projet, il est défini comme 0
pour l'une ou l'autre des raisons suivantes:
wxdebug.h
n'est pas disponible (c'est-à-dire, n'utilisant pas le SDK Windows Mobile)IsBadreadPtr()
indiquent: "Important Cette fonction est obsolète et ne doit pas être utilisée.Malgré son nom, elle ne garantit pas que le pointeur est valide ou que la mémoire pointée vers est sûre.Pour plus d'informations, voir Remarques. ". Et Raymond Chen a écrit un article sur les problèmes avec IsBadReadPtr()
: IsBadXxxPtr should really be called CrashProgramRandomlyIl a probablement été utilisé pour autre chose, puis a été redéfini comme 0
.
C'est la beauté des macros, vous pouvez les utiliser dans votre code, et ensuite, une redéfinition simple suffit pour changer toutes les occurrences de cette macro dans le code.
Ce qui se passe probablement maintenant, c'est que le programmeur veut que la validation (ValidateReadPtr
) renvoie toujours FALSE
(0
en C/C++).
if (!ValidateReadPtr(p,cb))
printf("Your ReadPtr is valid\n");
;)
Mais cette macro ne fait aucune validation réelle contre Pointer du tout. – Alan
Non, pas pour le moment. Mais probablement dans les versions précédentes sur le code, il l'a fait ... –