【发布时间】:2020-08-25 05:27:40
【问题描述】:
自 C++11 起,标准允许宏 NULL 为值为零的整数文字,或类型为 std::nullptr_t 的纯右值。
任何标准库供应商决定将其 NULL 的定义从整数更改为 nullptr 很可能会导致依赖 C++11 之前代码的客户端出现故障。
是否有任何主要实现(例如 GCC、Clang、MSVC)实际上将 NULL 定义为 nullptr? 或者,尽管有可能,但没有人这样做?
【问题讨论】:
-
您可以为您的工具链轻松确定这一点(实际上,对于所有三个)。您在获取这些信息时遇到了一些实际问题吗?
-
如果将
NULL从0L更改为nullptr会破坏您的代码,恕我直言,您的代码一直被破坏。 -
@AsteroidsWithWings “与 C 共享”是什么意思?通常是
0L用于 C++,(void*)0用于 C 和#ifndef __cplusplus。 -
@Ayxan 啊,真的吗?不知道。
-
作为参考,STL 有一个关于试图改变这一点并在他们自己的代码中遇到一堆问题的轶事:youtu.be/AKtHxKJRwp4?t=3437。 OTOH,几年后有this tweet,同一个人。
标签: c++ c++11 null c++-standard-library nullptr