nullptr_t
来自cppreference.com
在标头 <stddef.h> 定义
|
||
typedef typeof(nullptr) nullptr_t; |
(C23 起) | |
nullptr_t
是预定义空指针常量 nullptr 的类型。它是自身非指针类型的单独类型。它能隐式转换到任何指针类型或 bool ,而结果分别为该类型的空指针值或 false 。除了 nullptr_t
自身,没有其他类型能转换或显式转型成 nullptr_t
。
sizeof(nullptr_t) 与 alignof(nullptr_t) 分别等于 sizeof(void*) 与 alignof(void*) 。
nullptr_t
仅有一个合法值,即 nullptr 。 nullptr 的对象表示与 (void*)0 的相同。若程序产生拥有不同对象表示的 nullptr_t
值,则行为未定义。
示例
演示 nullptr_t
为单独的类型。
运行此代码
#include <stddef.h> #define DETECT_NULL_POINTER_CONSTANT(e) \ _Generic(e, \ void* : puts("void*"), \ nullptr_t : puts("nullptr_t"), \ default : puts("other") \ ) int main() { DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); }
输出:
void* other nullptr_t
参阅
实现定义的空指针常量 (宏常量) |