标准库标头 <stdint.h> (C99)

来自cppreference.com
< c | header


本标头是类型支持库的一部分,提供定宽整数类型,且是数值极限接口的一部分。

类型

对于下列每个标记有 (可选) 的 typedef 名,当且仅当实现提供了对应的某个类型时,实现才会定义该 typedef 名。

int8_tint16_tint32_tint64_tintN_t
(可选)(可选)(可选)(可选)(可选)
宽度正好是 N(典型情况有 8、16、32 和 64)位且无填充位的有符号整数类型
(typedef) [编辑]
int_fast8_tint_fast16_tint_fast32_tint_fast64_tint_fastN_t
(可选)
宽度至少有 N(典型情况有 8、16、32 和 64)位的最快的有符号整数类型
(typedef) [编辑]
int_least8_tint_least16_tint_least32_tint_least64_tint_leastN_t
(可选)
宽度至少有 N(典型情况有 8、16、32 和 64)位的最小的有符号整数类型
(如果有定义 intN_t,那么 int_leastN_t 表示相同的类型)
(typedef) [编辑]
intmax_t
位精确整数类型以外的(C23 起)最大宽度的有符号整数类型
(typedef) [编辑]
intptr_t
(可选)
位精确整数类型以外的(C23 起)足以保有指向 void 的指针的有符号整数类型
(typedef) [编辑]
uint8_tuint16_tuint32_tuint64_tuintN_t
(可选)(可选)(可选)(可选)(可选)
宽度正好是 N(典型情况有 8、16、32 和 64)位且无填充位的无符号整数类型
(typedef) [编辑]
uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_tuint_fastN_t
(可选)
宽度至少有 N(典型情况有 8、16、32 和 64)位的最快的无符号整数类型
(typedef) [编辑]
uint_least8_tuint_least16_tuint_least32_tuint_least64_tuint_leastN_t
(可选)
宽度至少有 N(典型情况有 8、16、32 和 64)位的最小的无符号整数类型
(如果有定义 uintN_t,那么 uint_leastN_t 表示相同的类型)
(typedef) [编辑]
uintmax_t
位精确整数类型以外的(C23 起)最大宽度的无符号整数类型
(typedef) [编辑]
uintptr_t
(可选)
位精确整数类型以外的(C23 起)足以保有指向 void 的指针的无符号整数类型
(typedef) [编辑]

宏常量

对于下列每个标记有 (有条件提供) 的宏,当且仅当实现定义了对应的 typedef 名时,实现才会定义该宏。

有符号整数:位宽
INTN_WIDTH
(C23)(有条件提供)
intN_t 的位宽(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
INT_FASTN_WIDTH
(C23)(有条件提供)
int_fastN_t 的位宽(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
INT_LEASTN_WIDTH
(C23)(有条件提供)
int_leastN_t 的位宽(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
INTMAX_WIDTH
(C23)
intmax_t 的位宽
(宏常量) [编辑]
INTPTR_WIDTH
(C23)(有条件提供)
intptr_t 的位宽
(宏常量) [编辑]
有符号整数:最小值
INTN_MIN
(有条件提供)
intN_t 的最小值(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
INT_FASTN_MIN
(有条件提供)
int_fastN_t 的最小值(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
INT_LEASTN_MIN
(有条件提供)
int_leastN_t 的最小值(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
INTPTR_MIN
(有条件提供)
intptr_t 的最小值
(宏常量) [编辑]
INTMAX_MIN
intmax_t 的最小值
(宏常量) [编辑]
有符号整数:最大值
INTN_MAX
(有条件提供)
intN_t 的最大值(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
INT_FASTN_MAX
(有条件提供)
int_fastN_t 的最大值(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
INT_LEASTN_MAX
(有条件提供)
int_leastN_t 的最大值(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
INTPTR_MAX
(有条件提供)
intptr_t 的最大值
(宏常量) [编辑]
INTMAX_MAX
intmax_t 的最大值
(宏常量) [编辑]
无符号整数:位宽
UINTN_WIDTH
(C23)(有条件提供)
uintN_t 的位宽(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
UINT_FASTN_WIDTH
(C23)(有条件提供)
uint_fastN_t 的位宽(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
UINT_LEASTN_WIDTH
(C23)(有条件提供)
uint_leastN_t 的位宽(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
UINTMAX_WIDTH
(C23)
uintmax_t 的位宽
(宏常量) [编辑]
UINTPTR_WIDTH
(C23)(有条件提供)
uintptr_t 的位宽
(宏常量) [编辑]
无符号整数:最大值
UINTN_MAX
(有条件提供)
uintN_t 的最大值(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
UINT_FASTN_MAX
(有条件提供)
uint_fastN_t 的最大值(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
UINT_LEASTN_MAX
(有条件提供)
uint_leastN_t 的最大值(N 的典型情况有 8、16、32 和 64)
(宏常量) [编辑]
UINTPTR_MAX
(有条件提供)
uintptr_t 的最大值
(宏常量) [编辑]
UINTMAX_MAX
uintmax_t 的最大值
(宏常量) [编辑]
其他整数类型特征
PTRDIFF_WIDTH
(C23)
ptrdiff_t 的位宽
(宏常量) [编辑]
PTRDIFF_MIN
ptrdiff_t 的最小值
(宏常量) [编辑]
PTRDIFF_MAX
ptrdiff_t 的最大值
(宏常量) [编辑]
SIZE_WIDTH
(C23)
size_t 的位宽
(宏常量) [编辑]
SIZE_MAX
size_t 的最大值
(宏常量) [编辑]
SIG_ATOMIC_WIDTH
(C23)
sig_atomic_t 的位宽
(宏常量) [编辑]
SIG_ATOMIC_MIN
sig_atomic_t 的最小值
(宏常量) [编辑]
SIG_ATOMIC_MAX
sig_atomic_t 的最大值
(宏常量) [编辑]
WINT_WIDTH
(C23)
wint_t 的位宽
(宏常量) [编辑]
WINT_MIN
wint_t 的最小值
(宏常量) [编辑]
WINT_MAX
wint_t 的最大值
(宏常量) [编辑]
WCHAR_WIDTH
(C23)
wchar_t 的位宽
(宏常量) [编辑]
WCHAR_MIN
wchar_t 的最小值
(宏常量) [编辑]
WCHAR_MAX
wchar_t 的最大值
(宏常量) [编辑]

函数宏

对于下列每个标记有 (有条件提供) 的宏,当且仅当实现定义了对应的 typedef 名时,实现才会定义该宏。

INTN_C
(有条件提供)
展开成 int_leastN_t 类型的整数常量表达式,它的值由实参指定
(宏函数) [编辑]
INTMAX_C
展开成 intmax_t 类型的整数常量表达式,它的值由实参指定
(宏函数) [编辑]
UINTN_C
(有条件提供)
展开成 uint_leastN_t 类型的整数常量表达式,它的值由实参指定
(宏函数) [编辑]
UINTMAX_C
展开成 uintmax_t 类型的整数常量表达式,它的值由实参指定
(宏函数) [编辑]

概要

#define STDC_VERSION_STDINT_H 202311L

// 见 intN_t 的描述
typedef /* 见描述 */ int8_t;        // 可选
typedef /* 见描述 */ int16_t;       // 可选
typedef /* 见描述 */ int32_t;       // 可选
typedef /* 见描述 */ int64_t;       // 可选
typedef /* 见描述 */ intN_t;        // 可选

// 见 int_fastN_t 的描述
typedef /* 见描述 */ int_fast8_t;
typedef /* 见描述 */ int_fast16_t;
typedef /* 见描述 */ int_fast32_t;
typedef /* 见描述 */ int_fast64_t;
typedef /* 见描述 */ int_fastN_t;   // 可选

// 见 int_leastN_t 的描述
typedef /* 见描述 */ int_least8_t;
typedef /* 见描述 */ int_least16_t;
typedef /* 见描述 */ int_least32_t;
typedef /* 见描述 */ int_least64_t;
typedef /* 见描述 */ int_leastN_t;  // 可选

typedef /* 见描述 */ intmax_t;
typedef /* 见描述 */ intptr_t;      // 可选

// 见 uintN_t 的描述
typedef /* 见描述 */ uint8_t;       // 可选
typedef /* 见描述 */ uint16_t;      // 可选
typedef /* 见描述 */ uint32_t;      // 可选
typedef /* 见描述 */ uint64_t;      // 可选
typedef /* 见描述 */ uintN_t;       // 可选

// 见 uint_fastN_t 的描述
typedef /* 见描述 */ uint_fast8_t;
typedef /* 见描述 */ uint_fast16_t;
typedef /* 见描述 */ uint_fast32_t;
typedef /* 见描述 */ uint_fast64_t;
typedef /* 见描述 */ uint_fastN_t;  // 可选

// 见 uint_leastN_t 的描述
typedef /* 见描述 */ uint_least8_t;
typedef /* 见描述 */ uint_least16_t;
typedef /* 见描述 */ uint_least32_t;
typedef /* 见描述 */ uint_least64_t;
typedef /* 见描述 */ uint_leastN_t; // 可选

typedef /* 见描述 */ uintmax_t;
typedef /* 见描述 */ uintptr_t;     // 可选

#define INTN_MIN          /* 见描述 */
#define INTN_MAX          /* 见描述 */
#define UINTN_MAX         /* 见描述 */
#define INTN_WIDTH        /* 见描述 */
#define UINTN_WIDTH       /* 见描述 */

#define INT_FASTN_MIN     /* 见描述 */
#define INT_FASTN_MAX     /* 见描述 */
#define UINT_FASTN_MAX    /* 见描述 */
#define INT_FASTN_WIDTH   /* 见描述 */
#define UINT_FASTN_WIDTH  /* 见描述 */

#define INT_LEASTN_MIN    /* 见描述 */
#define INT_LEASTN_MAX    /* 见描述 */
#define UINT_LEASTN_MAX   /* 见描述 */
#define INT_LEASTN_WIDTH  /* 见描述 */
#define UINT_LEASTN_WIDTH /* 见描述 */

#define INTMAX_MIN        /* 见描述 */
#define INTMAX_MAX        /* 见描述 */
#define UINTMAX_MAX       /* 见描述 */
#define INTMAX_WIDTH      /* 见描述 */
#define UINTMAX_WIDTH     /* 见描述 */

#define INTPTR_MIN        /* 见描述 */ // 可选
#define INTPTR_MAX        /* 见描述 */ // 可选
#define UINTPTR_MAX       /* 见描述 */ // 可选
#define INTPTR_WIDTH      /* 见描述 */ // 可选
#define UINTPTR_WIDTH     /* 见描述 */ // 可选

#define PTRDIFF_MIN       /* 见描述 */
#define PTRDIFF_MAX       /* 见描述 */
#define PTRDIFF_WIDTH     /* 见描述 */
#define SIZE_MAX          /* 见描述 */
#define SIZE_WIDTH        /* 见描述 */

#define SIG_ATOMIC_MIN    /* 见描述 */
#define SIG_ATOMIC_MAX    /* 见描述 */
#define SIG_ATOMIC_WIDTH  /* 见描述 */

#define WCHAR_MIN         /* 见描述 */
#define WCHAR_MAX         /* 见描述 */
#define WCHAR_WIDTH       /* 见描述 */

#define WINT_MIN          /* 见描述 */
#define WINT_MAX          /* 见描述 */
#define WINT_WIDTH        /* 见描述 */

#define INTN_C(value)     /* 见描述 */
#define UINTN_C(value)    /* 见描述 */
#define INTMAX_C(value)   /* 见描述 */
#define UINTMAX_C(value)  /* 见描述 */

仅当实现定义了 __STDC_LIB_EXT1__,而且用户代码在对 <stdint.h> 的所有包含之前定义了 __STDC_WANT_LIB_EXT1__

#if defined(__STDC_WANT_LIB_EXT1__)
#define RSIZE_MAX /* 见描述 */
#endif