我有以下代码:
MyType x = NULL;
NetBeans 给了我一个建议,把它改成这样:
MyType x = __null;
我查了一下,发现 __null
被称为“编译器关键字”,我认为这意味着它在编译器内部使用。我不明白为什么 NetBeans 建议将其更改为编译器关键字。
NULL
和__null
在c++中有什么区别?
最佳答案
__null
是 g++
内部的东西,其用途与 C++11 中添加的标准 nullptr
大致相同(始终如一个指针,绝不是整数)。
NULL
定义为0
,可以隐式使用整数、 bool 值、浮点值或指针,这在重载解析时是个问题,当你想调用专门带指针的函数时。
无论如何,您都不应该使用 __null
因为它是一个 g++
实现细节,因此使用它可以保证代码不可移植。如果您可以依赖 C++11(现在肯定可以吗?),请使用 nullptr
。如果没有,NULL
是您唯一的可移植选项。
关于c++ - C++ 中的 NULL 和 __null 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53963646/