Predefined null pointer constant (since C23)
From cppreference.net
目次 |
構文
nullptr
|
(C23以降) | ||||||||
説明
キーワード
nullptr
は事前定義されたヌルポインタ定数を表します。これは
非左辺値
であり、型は
nullptr_t
です。
nullptr
はポインタ型または
bool
に
変換
可能であり、変換結果はそれぞれその型のヌルポインタ値、または
false
となります。
キーワード
例
nullptr
のコピーもヌルポインタ定数として使用できることを示します。
このコードを実行
#include <stddef.h> #include <stdio.h> void g(int*) { puts("Function g called"); } #define DETECT_NULL_POINTER_CONSTANT(e) \ _Generic(e, \ void* : puts("void*"), \ nullptr_t : puts("nullptr_t"), \ default : puts("integer") \ ) int main() { g(nullptr); // OK g(NULL); // OK g(0); // OK auto cloned_nullptr = nullptr; g(cloned_nullptr); // OK [[maybe_unused]] auto cloned_NULL = NULL; // g(cloned_NULL); // 実装定義: 場合によってはOK [[maybe_unused]] auto cloned_zero = 0; // g(cloned_zero); // エラー DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); DETECT_NULL_POINTER_CONSTANT(NULL); // 実装定義 }
出力例:
Function g called Function g called Function g called Function g called void* integer nullptr_t void*
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 6.4.4.6 事前定義定数 (p: 66)
関連項目
|
実装定義のヌルポインタ定数
(マクロ定数) |
|
|
(C23)
|
事前定義されたヌルポインタ定数
nullptr
の型
(typedef) |
|
C++ documentation
for
nullptr
|
|