什么是返回NOT NULL指针的正确方法

ShP*_*vel 7 c++ pointers

我在我的C++程序中使用外部C库,并且库使用必须返回的回调函数void*.库检查返回值是否为NULL,这意味着成功.

那么告诉它一切都很好的最佳方法是什么?

我用:

return reinterpret_cast<void*>(1);
Run Code Online (Sandbox Code Playgroud)

但它看起来很难看......

编辑:谢谢你的回复,我会留下这个:

static int success;
return &success;
Run Code Online (Sandbox Code Playgroud)

Mar*_*tos 11

static int dummy;
return &dummy;
Run Code Online (Sandbox Code Playgroud)

严格来说,static可能不是必需的,但是返回指向超出范围的本地的指针感觉有点笨拙.

编辑:注意@ sharptooth的评论.严格来说,static 必需的.

  • 如果没有`static`,你会得到一个悬空指针并且使用(甚至复制)这样的指针就是UB. (5认同)
  • 是的,这是一个常见的误解http://stackoverflow.com/a/1866543/57428它只适用于大多数架构,但它是UB. (2认同)