定义于头文件
<clocale>
|
||
定义于头文件
<cstddef>
|
||
定义于头文件
<cstdio>
|
||
定义于头文件
<cstdlib>
|
||
定义于头文件
<cstring>
|
||
定义于头文件
<ctime>
|
||
定义于头文件
<cwchar>
|
||
#define NULL /*implementation-defined*/
|
||
宏 NULL
是实现定义的空指针常量,可为
(C++11 前) | |
零值整数字面量,或为 std::nullptr_t 类型纯右值 |
(C++11 起) |
空指针常量可以隐式转换为任何指针类型;这种转换结果是该类型的空指针值。若空指针常量拥有整数类型,它亦可转换为 std::nullptr_t 类型纯右值。
目录 |
#define NULL 0 // C++11 起 #define NULL nullptr |
C 中,宏 NULL
可以拥有类型 void*
,但这在 C++ 中不允许。
#include <cstddef> class S; int main() { int* p = NULL; int* p2 = static_cast<std::nullptr_t>(NULL); void(*f)(int) = NULL; int S::*mp = NULL; void(S::*mfp)(int) = NULL; }
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
DR | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
CWG 903 | C++11 | 曾允许零值的表达式,如 1-1 | 只允许字面的零 |
nullptr | 指定空指针值的指针字面量(C++11) |
(C++11)
|
空指针字面量 nullptr 的类型 (typedef) |
NULL的 C 文档
|