首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++98正确检查空指针

C++98正确检查空指针
EN

Stack Overflow用户
提问于 2017-07-05 13:25:29
回答 2查看 1.4K关注 0票数 5

C++11引入了nullptr关键字,我没有这个关键字。

我想是C中的NULL宏,我在C++中读到了从这里这里中使用的宏,但是我仍然不确定在这个较老的C++标准中检查空指针的正确方法是什么。

实际上,我希望能够用Boost test为我的测试用例编写这段代码:

代码语言:javascript
复制
aWrapperDataStructure x;
BOOST_CHECK_NE(x.get_ptr(), static_cast<decltype(x.get_ptr())>(nullptr));

但是,也许,正如教程点所建议的那样,考虑到限制因素,这样的事情更合适:

代码语言:javascript
复制
BOOST_CHECK(x.get_ptr()); //true when not NULL

不过,这件事让我很不爽,所以我想知道这里的最佳做法是什么。如果它是在网上的某个地方,或者说,它已经被埋了很久,我找不到它。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-05 14:35:36

我觉得在这里回答我自己的问题是不对的,因为我绝对没有资格回答这个问题,但我从James那里读到了这个答案这里 (尽管有更新的标准,它仍然被标记为C++ ):

如果您使用g++,那么您确实应该使用NULL

这对我来说绝对够好的。不过,我找到了这些用于检查空指针的表达式:

代码语言:javascript
复制
(p != NULL) //requires #include <stddef.h>

(p != 0)

(p)

在这三个中,我在问题中提到的最后一个,是从指针到bool (嘶嘶声)的隐式转换。使用!===至少可以显式地转换为bool,而且,使用NULL显示了检查空指针的意图。

因此,我认为即使不使用g++,表达式(p != NULL)也是旧的C++标准最合适的方法。(然而,我仍然会放弃别人的专业知识,并记下他们的答案;我只是一名本科生。)

票数 2
EN

Stack Overflow用户

发布于 2017-07-05 14:59:07

g++默认使用C++11已有一段时间了。

因此,您可以使用nullptr和“现代”以及类型安全。

如果你必须是预C++11便携式NULL是最好的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44927576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档