gpt4 book ai didi

c++ - 用于空安全指针访问的 C/C++ 宏

转载 作者:太空狗 更新时间:2023-10-29 19:57:18 35 4
gpt4 key购买 nike

我想为空安全指针访问编写一个 C/C++ 宏。我目前有这个,效果很好:

#define NULL_SAFE(p, e) if (p) p->e
NULL_SAFE(myPtr, myMethod(myArg));

但我真正想要的是拥有这样的东西:

NULL_SAFE(
myPtr, myMethod(myArg),
myOtherPtr, myOtherMethod(myOtherArg),
yetAnotherMyPtr, plsStopMethod(grArg),
...
);

这将扩展为:

  if (myPtr) myPtr->myMethod(myArg);
if (myOtherPtr) myOtherPtr->myOtherMethod(myOtherArg);
if (yetAnotherMyPtr) yetAnotherMyPtr->plsStopMethod(grArg);

我可以想到一大堆我可能会喜欢使用的东西,但它们都基于与此相同的概念。

这可能吗?这是否已经存在于某处?有什么建议么?感谢您的帮助!

最佳答案

如果 NULL 检查是算法的一部分,那么只需显式输入 NULL 检查而无需任何讨厌的宏。

如果 NULL 检查是一种防御性编程方式,那么正确的做法是 assert(ptr);。如果断言曾经触发,请修复导致它的错误。重复直到没有错误为止,然后从生产质量代码中删除断言。

关于c++ - 用于空安全指针访问的 C/C++ 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38123655/

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