c++ - C++ 中的 NULL 和 __null 有什么区别?

标签 c++ null keyword

我有以下代码:

MyType x = NULL;

NetBeans 给了我一个建议,把它改成这样:

MyType x = __null;

我查了一下,发现 __null 被称为“编译器关键字”,我认为这意味着它在编译器内部使用。我不明白为什么 NetBeans 建议将其更改为编译器关键字。

NULL__null在c++中有什么区别?

最佳答案

__nullg++ 内部的东西,其用途与 C++11 中添加的标准 nullptr 大致相同(始终如一个指针,绝不是整数)。

NULL定义为0,可以隐式使用整数、 bool 值、浮点值或指针,这在重载解析时是个问题,当你想调用专门带指针的函数时。

无论如何,您都不应该使用 __null 因为它是一个 g++ 实现细节,因此使用它可以保证代码不可移植。如果您可以依赖 C++11(现在肯定可以吗?),请使用 nullptr。如果没有,NULL 是您唯一的可移植选项。

关于c++ - C++ 中的 NULL 和 __null 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53963646/

相关文章:

mysql - 如何将 NULL 视为 MAX 日期而不是在 MySQL 中忽略它?

php - 选择所有列都有数据且不为空的记录

variables - 如何在vim中高亮显示c/c++文件的变量

c++链表奇怪的编译器错误

c++ - 启用静态检查以进行持续评估

c++ - 如何查询当前线程的 COM 单元状态

c++ - 如何检测窗口何时收到 WM_MOVE 消息

c# - 将裸空文字与用户定义的运算符一起使用时奇怪的重载解决方案

C# 关键字类似于 "this"但对于当前类类型?

python - 关键字或语句与函数调用之间有什么区别?