gpt4 book ai didi

C++98 正确检查空指针

转载 作者:行者123 更新时间:2023-12-01 04:47:59 24 4
gpt4 key购买 nike

C++11介绍了nullptr关键字,我没有。

我想有 NULL来自 C 的宏,我从一些东西中读到了在 C++ 中使用的宏 herehere ,但我仍然不确定在这个旧的 C++ 标准中检查空指针的正确方法是什么。

我基本上希望能够使用 Boost Test 为我的测试用例编写此代码:

aWrapperDataStructure x;
BOOST_CHECK_NE(x.get_ptr(), static_cast<decltype(x.get_ptr())>(nullptr));

但也许,正如 Tutorials Point 建议的那样,考虑到限制,这样的事情更合适:
BOOST_CHECK(x.get_ptr()); //true when not NULL

不过,关于这方面的一些事情让我感到厌烦,所以我想知道这里的最佳做法是什么。如果它在网上的某个地方,或者在 SO 上,它已经被埋藏很久了,我找不到它。谢谢!

最佳答案

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

If you use g++, you really should use NULL.



这对我来说绝对足够了。不过,我发现这些表达式用于检查空指针:
(p != NULL) //requires #include <stddef.h>

(p != 0)

(p)

在这 3 个中,我在我的问题中提到的最后一个,进行了从指针到 bool(嘶嘶声)的隐式转换。使用 !===至少显式转换为 bool,此外,使用 NULL显示您检查空指针的意图。

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

关于C++98 正确检查空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44927576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com