#define ValidateReadPtr(p,cb) 0

我想不出这种宏的用例,你呢?

最佳答案

我只能在 Windows Mobile SDK 的 ValidateReadPtr() header 中找到 wxdebug.h 宏(即使 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/

    10-09 13:26