最終更新日時: 2026年06月15日 14時22分22秒 (JST)
Akira Takahashi が更新

履歴 編集

<cstddef>

# cstddef

`<cstddef>`ヘッダでは基本的な型、値、マクロを定義する。

本ヘッダはフリースタンディング環境でも提供される。

## 型

名前 | 説明 | 対応バージョン
--- | --- | ---
`ptrdiff_t` | ポインタの差演算の結果 |
`size_t` | 符号なし整数型 |
`nullptr_t` | `nullptr`の型 | C++11
`max_align_t` | 最大のアライメントを要求する型 | C++11
`byte` | バイトデータを表す型 | C++17

## 関数マクロ

名前 | 説明 | 対応バージョン
--- | --- | ---
`offsetof` | メンバへのオフセットを返す |

## 定数

名前 | 説明 | 対応バージョン
--- | --- | ---
`NULL` | ヌルポインタ定数に展開されるマクロ |

C言語においては、このヘッダは`wchar_t`型（ワイド文字型）の宣言もインクルードする。C++において`wchar_t`型は組み込み型であるため、いかなるヘッダもインクルードする必要がない。

## 備考

- C23の`<stddef.h>`が定義する`unreachable`マクロは、`<cstddef>`では定義されない。C++では`std::unreachable()`を使用する
- C23の`<stddef.h>`が定義するバージョンマクロ`__STDC_VERSION_STDDEF_H__`は、`<cstddef>`では意図的に定義されない

## 参照

- P3348R4 C++26 should refer to C23 not C17
  - C++26がC23を参照するようになった際、`<cstddef>`では`unreachable`マクロおよび`__STDC_VERSION_STDDEF_H__`を定義しないことが明記された