#define ValidateReadPtr(p,cb) 0
我想不出这种宏的用例,你呢?
最佳答案
我只能在 Windows Mobile SDK 的 wxdebug.h
header 中找到 ValidateReadPtr()
宏(即使 MSDN 表明它是 DirectShow API 的一部分)。
在wxdebug.h
中定义为:
#define ValidateReadPtr(p,cb) \
{if(IsBadReadPtr((PVOID)p,cb) == TRUE) \
DbgBreak("Invalid read pointer");}
我怀疑在您的项目中它被定义为 0
是出于以下一个或两个原因:
- 即使
wxdebug.h
header 不可用(即不使用 Windows Mobile SDK),也能编译使用它的代码 - IsBadReadPtr() 现在被认为是不应该使用的危险 API。
IsBadreadPtr()
的文档说,“重要提示此函数已过时,不应使用。尽管它的名称如此,但它不能保证指针有效或指向的内存可以安全使用. 有关详细信息,请参阅备注...”。 Raymond Chen 写了一篇关于IsBadReadPtr()
问题的文章:IsBadXxxPtr should really be called CrashProgramRandomly
关于c++ - 这样的宏有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3915379/