# 标准库头文件 <cstddef>

< cpp‎ | header

此头文件原作为 `<stddef.h>` 存在于 C 标准库。

此头文件是工具库的一部分。

### 宏
NULL | 实现定义的空指针常量 (宏常量)
offsetof | 从标准布局类型的起始到其指定成员的字节偏移量 (宏函数)
### 类型
size_t | `sizeof` 运算符返回的无符号整数类型 (typedef)
ptrdiff_t | 在两个指针相减时返回的有符号整数类型 (typedef)
nullptr_t (C++11) | 空指针字面量 `nullptr` 的类型 (typedef)
max_align_t (C++11) | 具有不小于任何基础类型的内存对齐需求的平凡类型 (typedef)
byte (C++17) | 字节类型 (枚举)

### 概要

    namespace std {
      using ptrdiff_t = /* 见描述 */;
      using size_t = /* 见描述 */;
      using max_align_t = /* 见描述 */;
      using nullptr_t = decltype(nullptr);

      enum class byte : unsigned char {};

      // 字节类型运算
      template<class IntType>
        constexpr byte& operator<<=(byte& b, IntType shift) noexcept;
      template<class IntType>
        constexpr byte operator<<(byte b, IntType shift) noexcept;
      template<class IntType>
        constexpr byte& operator>>=(byte& b, IntType shift) noexcept;
      template<class IntType>
        constexpr byte operator>>(byte b, IntType shift) noexcept;
      constexpr byte& operator|=(byte& l, byte r) noexcept;
      constexpr byte operator|(byte l, byte r) noexcept;
      constexpr byte& operator&=(byte& l, byte r) noexcept;
      constexpr byte operator&(byte l, byte r) noexcept;
      constexpr byte& operator^=(byte& l, byte r) noexcept;
      constexpr byte operator^(byte l, byte r) noexcept;
      constexpr byte operator~(byte b) noexcept;
      template<class IntType>
        constexpr IntType to_integer(byte b) noexcept;
    }

    #define NULL /* 见描述 */
    #define offsetof(P, D) /* 见描述 */

### 注解

- NULL 亦定义于下列头文件：
  - `<clocale>`
  - `<ctime>`
  - `<cstring>`
  - `<cstdio>`
  - `<cstdlib>`
  - `<cwchar>`
- std::size_t 亦定义于下列头文件：
  - `<ctime>`
  - `<cstring>`
  - `<cstdio>`
  - `<cwchar>`
  - `<cuchar>` (C++17 起)