nullptr_t
|
헤더 파일에 정의됨
<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
의 객체 표현과 동일합니다.
lvalue 변환
이 다른 객체 표현을 가진
nullptr_t
값을 생성하는 경우, 그 동작은 정의되지 않습니다.
예제
nullptr_t
가 별개의 타입임을 증명합니다.
#include <stddef.h> #include <stdio.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
참조문헌
- C23 표준 (ISO/IEC 9899:2024):
-
- 7.21.2 nullptr_t 타입 (p: 315-316)
참고 항목
|
구현에서 정의된 널 포인터 상수
(매크로 상수) |
|
|
C++ documentation
for
nullptr_t
|
|