#define ValidateReadPtr(p,cb) 0
我想不出这种宏的用例,你怎么样?
答案 0 :(得分:6)
我只能在Windows Mobile SDK的ValidateReadPtr()
标题中找到wxdebug.h
宏(即使MSDN表明它是DirectShow API的一部分)。
在wxdebug.h
中,它被定义为:
#define ValidateReadPtr(p,cb) \
{if(IsBadReadPtr((PVOID)p,cb) == TRUE) \
DbgBreak("Invalid read pointer");}
我怀疑在您的项目中,由于以下一个或两个原因,它被定义为0
:
wxdebug.h
标头不可用(即,不使用Windows Mobile SDK)也会编译IsBadreadPtr()
的文档说,“重要此函数已过时,不应使用。尽管它的名称,它不保证指针有效或指向的内存可以安全使用。有关更多信息,见备注......“。 Raymond Chen撰写了一篇关于IsBadReadPtr()
:IsBadXxxPtr should really be called CrashProgramRandomly 答案 1 :(得分:4)
它可能用于其他东西,然后被重新定义为0
。
这就是宏的优点,您可以在代码中使用它们,然后,一个简单的重新定义就足以改变代码中所有宏的出现。
现在可能发生的是程序员希望验证(ValidateReadPtr
)始终返回FALSE
(C / C ++中的0
)。
答案 2 :(得分:4)
答案 3 :(得分:0)
if (!ValidateReadPtr(p,cb))
printf("Your ReadPtr is valid\n");
)