gpt4 book ai didi

c++ - 未使用 NULL 宏指定空指针常量

转载 作者:行者123 更新时间:2023-11-28 02:58:09 25 4
gpt4 key购买 nike

我正在使用分析 C++ 代码的工具。我的代码看起来像这样:

#define NULL 0

...
char * buff;
if (buff != NULL) { // -> error The null-pointer-constant is not specified using the NULL macro
...
}

更新:如果我删除#define null 行,我会得到同样的错误:

const int* var = 0; 

你知道为什么这个语法不起作用吗?是因为NULL定义为0?

谢谢

最佳答案

NULL 宏的值是在 C++ 中定义的实现。

考虑到这一点,您的静态分析工具提示您使用您自己定义的值可能是错误的,这是合理的。 (即使它基本上适用于所有编译器)

也就是说,如果您可以访问 C++11,首选方法是使用关键字 nullptr 而不是 NULL 因为它解决了大部分问题使用 NULL0

示例(实时代码:http://ideone.com/EmahXG):

int foo( int   );
int foo( int * );

foo( NULL ); // Will call first overload if NULL is defined as 0
foo( nullptr ); // Will call second overload as nullptr is not implicitly convertable to non-pointer types.

关于c++ - 未使用 NULL 宏指定空指针常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21528378/

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