c++ - 这样的宏有什么用?

标签 c++ macros

#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/

相关文章:

c++ - 使用madeline2绘制谱系

python - 有什么方法可以像Python中的C++宏函数那样替换数字吗?

ios - 如何在不使用对象或类方法的情况下调用另一个类的变量?

c++ - C++中 vector 的指针算法

c# - C#中的隐式类型转换

具有可交换元素的 C++ 固定大小容器

emacs - 从宏创建自动加载的函数

c++ - 编写高效的回溯函数

macros - 在设定的时间间隔后,在 SAS 宏超时中执行一个步骤

C、宏参数、参数替换