基本类型

基本类型

GLib 定义了一些常用类型,可以分为以下几个组

GLib 还为部分标准整型和浮点类型的限制定义了宏,以及为这些类型定义了合适的 printf() 格式宏。

请注意,根据平台和生成配置,格式宏可能与系统提供的 printf() 函数不兼容,因为 GLib 可能在内部使用不同的 printf() 实现。格式宏始终适用于 GLib API(如 g_print())以及任何与 C99 兼容的 printf() 实现。

基本类型

gboolean

标准布尔型。此类型的变量只应包含值 TRUEFALSE

绝不要将 gboolean 变量的内容直接与值 TRUEFALSE 进行比较。使用 if (condition) 检查 gboolean 是否为“真”,而不是 if (condition == TRUE)。同样地,使用 if (!condition) 检查 gboolean 是否“假”。

在对 gboolean 变量赋值时没有验证,因此它可以包含 gint 表示的任何值。这就是建议使用 if (condition) 的原因。C 中的所有非零值都将评估为“真”。

gpointer

未类型的指针,与 void * 完全相同。

通常在新代码中应首选标准 C void * 类型,但 gpointer 可用于必须为单字的类型名的上下文中,例如在 G_TYPE_POINTERGType 名称中或在使用宏为多个类型生成一系列函数名时。

gconstpointer

指向常量数据的未类型指针,与 const void * 完全相同。

不应更改所指向的数据。

这通常用于函数原型中,以指示所指向的数据不会被函数更改。

在新代码中通常应优先使用标准 C const void * 类型,但 gconstpointer 可用于必须为单字的类型名的上下文中。

gchar

相当于标准 C char 类型。

此类型仅出于与 guchar 对称而存在。在新代码中应优先使用标准 C char 类型。

guchar

相当于标准 C unsigned char 类型。

在新代码中通常应优先使用标准 C unsigned char 类型,但在类型名称必须为单个单词(例如在 G_TYPE_UCHARGType 名称中,或在使用宏为多种类型生成一组函数名称时)的情况下,可以使用 guchar

自然大小整数

gint

相当于标准 C int 类型。

此类型的取值范围为 INT_MININT_MAX,或等价地从 G_MININTG_MAXINT

此类型仅出于与 guint 对称而存在。在新代码中应优先使用标准 C int 类型。

G_MININT

可以在 gint 中保存的最小值。

这与标准 C INT_MIN 相同,它在 C99 中可用,并且应在新代码中优先使用。

G_MAXINT

可以在 gint 中保存的最大值。

这与标准 C INT_MAX 相同,它在 C99 中可用,并且应在新代码中优先使用。

guint

相当于标准 C unsigned int 类型。

此类型的取值范围为 0UINT_MAX,或等价地 0G_MAXUINT

在新代码中通常应优先使用标准 C unsigned int 类型,但在类型名称必须为单个单词(例如在 G_TYPE_UINTGType 名称中,或在使用宏为多种类型生成一组函数名称时)的情况下,可以使用 guint

G_MAXUINT

可以在 guint 中保存的最大值。

这与标准 C UINT_MAX 相同,它在 C99 中可用,并且应在新代码中优先使用。

gshort

相当于标准 C short 类型。

此类型的取值范围为 SHRT_MINSHRT_MAX,或等价地 G_MINSHORTG_MAXSHORT

此类型仅出于与 gushort 对称而存在。在新代码中应优先使用标准 C short 类型。

G_MINSHORT

可以在 gshort 中保存的最小值。

这与标准 C SHRT_MIN 相同,它在 C99 中可用,并且应在新代码中优先使用。

G_MAXSHORT

可以在 gshort 中保存的最大值。

这与标准 C SHRT_MAX 相同,它在 C99 中可用,并且应在新代码中优先使用。

gushort

相当于标准 C unsigned short 类型。

此类型的取值范围为 0USHRT_MAX,或等价地从 0G_MAXUSHORT

在新代码中通常应优先使用标准 C unsigned short 类型,但在类型名称必须为单个单词(例如在使用宏为多种类型生成一组函数名称时)的情况下,可以使用 gushort

G_MAXUSHORT

可以在 gushort 中保存的最大值。

这与标准 C USHRT_MAX 相同,它在 C99 中提供,并且在新代码中应优先使用。

glong

相当于标准 C long 类型。

该类型的取值范围是从 LONG_MINLONG_MAX,或者等价的从 G_MINLONGG_MAXLONG

该类型仅为与 gulong 对称而存在。在新代码中应优先使用标准 C long 类型。

G_MINLONG

glong 中可保存的最小值。

这与标准 C LONG_MIN 相同,它在 C99 中提供,并且在新代码中应优先使用。

G_MAXLONG

glong 中可保存的最大值。

这与标准 C ULONG_MAX 相同,它在 C99 中提供,并且在新代码中应优先使用。

gulong

相当于标准 C unsigned long 类型。

该类型的取值范围是从 0G_MAXULONG

在新代码中通常应优先使用标准 C unsigned long 类型,但 gulong 可用于类型名称必须为单个单词的上下文中,例如为 G_TYPE_ULONGGType 名称,或者使用宏为多种类型生成函数名称系列时。

G_MAXULONG

gulong 中可保存的最大值。

这与标准 C ULONG_MAX 相同,它在 C99 中提供,并且在新代码中应优先使用。

固定宽度整数

gint8

一个有符号整数,保证在所有平台上都是 8 位,类似于标准 C int8_t

在新代码中应优先使用 int8_t 类型,除非为了与现有 API 的一致性需要使用 gint8(有关更多详情,请参见 gsize)。

该类型的取值范围是从 G_MININT8(= -128)到 G_MAXINT8(= 127)。

G_MININT8

gint8 中可保存的最小值。

自:2.4

G_MAXINT8

gint8 中可保存的最大值。

这与标准 C INT8_MAX 相同,应在新代码中优先使用。

自:2.4

guint8

一个无符号整数,保证在所有平台上都是 8 位,类似于标准 C uint8_t

在新代码中应优先使用 uint8_t 类型,除非为了与现有 API 的一致性需要使用 guint8(有关更多详情,请参见 gsize)。

该类型的取值范围是从 0G_MAXUINT8(= 255)。

G_MAXUINT8

guint8 中可保存的最大值。

这与标准 C UINT8_MAX 相同,应在新代码中优先使用。

自:2.4

gint16

一个有符号整数,保证在所有平台上都是 16 位,类似于标准 C int16_t

在新代码中应优先使用 int16_t 类型,除非为了与现有 API 的一致性需要使用 gint16(有关更多详情,请参见 gsize)。

该类型的取值范围是从 G_MININT16(= -32,768)到 G_MAXINT16(= 32,767)。

若要打印或扫描该类型的值,请使用 G_GINT16_MODIFIER 和/或 G_GINT16_FORMAT

G_MININT16

gint16 中可保存的最小值。

自:2.4

G_MAXINT16

gint16 中可保存的最大值。

这与标准 C INT16_MAX 相同,应在新代码中优先使用。

自:2.4

G_GINT16_MODIFIER

用于转换形式说明符的基于平台的长度修饰符,用于扫描和打印类型为 gint16guint16 的值。它是一个字符串字面量,但不包括百分号,这样您可以在百分号和转换形式说明符之间添加精度和长度修饰符并附加一个转换 说明符。

以下示例打印 0x7bc gint16 value = 123; g_print ("%#" G_GINT16_MODIFIER "x", value);

即使内存表示相同,这也不一定是用于打印和扫描 int16_t 值的正确修饰符。用于 int16_t 的标准 C 宏(例如 PRId16SCNd16)应用于 int16_t

自:2.4

G_GINT16_FORMAT

这是基于平台的转换形式说明符,用于扫描和打印类型为 gint16 的值。它是一个字符串字面量,但不包括百分号,这样您可以在百分号和转换 说明符之间添加精度和长度修饰符。

c gint16 in; gint32 out; sscanf ("42", "%" G_GINT16_FORMAT, &in) out = in * 1000; g_print ("%" G_GINT32_FORMAT, out);

即使内存表示相同,这也不一定是用于打印和扫描 int16_t 值的正确格式。用于 int16_t 的标准 C 宏(例如 PRId16SCNd16)应用于 int16_t

guint16

无符号整数,保证在所有平台上都是 16 位,类似于标准 C uint16_t

除非与现有 API 的一致性需要使用 guint16(有关更多 详细信息,请参阅 gsize),否则应在新代码中首选 uint16_t 类型。

此类型的值可以从 0G_MAXUINT16(= 65,535)。

要打印或扫描此类型的值,请使用 G_GINT16_MODIFIER 和/或 G_GUINT16_FORMAT

G_MAXUINT16

guint16 中可以保存的最大值。

这与标准 C UINT16_MAX 相同,在新 代码中应首选它。

自:2.4

G_GUINT16_FORMAT

这是基于平台的转换形式说明符,用于扫描和打印类型为 guint16 的值。另请参见 G_GINT16_FORMAT

即使内存表示相同,这也不一定是用于打印和扫描 uint16_t 值的正确修饰符。用于 uint16_t 的标准 C 宏(例如 PRIu16SCNu16)应用于 uint16_t

gint32

带符号整数,保证在所有 平台上都是 32 位。

除非与现有 API 的一致性需要使用 gint16(有关更多 详细信息,请参阅 gsize),否则应在新代码中首选 int32_t 类型。

此类型的值可以从 G_MININT32(= -2,147,483,648)到 G_MAXINT32(= 2,147,483,647)。

要打印或扫描此类型的值,请使用 G_GINT32_MODIFIER 和/或 G_GINT32_FORMAT

请注意,在具有多个 32 位标准整型类型的平台上,gint32int32_t 不一定由相同的 32 位整型类型实现。例如,在 intlong 都是 32 位的 ILP32 平台上,可能的情况是其中一个类型是 int,另一个是 long。有关此含义的更多详细信息,请参见 gsize

G_MININT32

gint32 中可以保存的最小值。

自:2.4

G_MAXINT32

gint32 中可以保存的最大值。

这与标准 C INT32_MAX 相同,在新 代码中应首选它。

自:2.4

G_GINT32_MODIFIER

用于扫描和打印类型为 gint32guint32 值的转换说明符的与平台相关的长度修饰符。它是一个字符串文字。另请参阅 G_GINT16_MODIFIER

对于 int32_t 值,这未必是正确的打印和扫描修饰符,即使其内存表示形式相同。用于 int32_t 的标准 C 宏(如 PRId32SCNd32)应被用于此目的。

自:2.4

G_GINT32_FORMAT

用于扫描和打印类型为 gint32 值的与平台相关的转换说明符。另请参阅 G_GINT16_FORMAT

对于 int32_t 值,这未必是正确的打印和扫描修饰符,即使其内存表示形式相同。用于 int32_t 的标准 C 宏(如 PRId32SCNd32)应被用于此目的。

guint32

一个无符号整数,在所有平台上都保证为 32 位,类似于标准 C 的 uint32_t

在新的代码中,uint32_t 类型应被优先使用,除非与现有 API 的一致性要求使用 guint32(请参阅 gsize 了解更多详情)。

此类型的取值范围为 0G_MAXUINT32(= 4,294,967,295)。

若要打印或扫描此类型的取值,请使用 G_GINT32_MODIFIER 和/或 G_GUINT32_FORMAT

请注意,在具有多个 32 位标准整数类型的平台上,guint32uint32_t 并不一定由相同的 32 位整数类型实现。请参阅 gsize 了解更多详情,以了解这意味着什么。

G_MAXUINT32

guint32 中可以容纳的最大值。

这与标准 C 的 UINT32_MAX 相同,后者在新的代码中更可取。

自:2.4

G_GUINT32_FORMAT

用于扫描和打印类型为 guint32 值的与平台相关的转换说明符。另请参阅 G_GINT16_FORMAT

对于 uint32_t 值,这未必是正确的打印和扫描修饰符,即使其内存表示形式相同。用于 uint32_t 的标准 C 宏(如 PRIu32SCNu32)应被用于此目的。

gint64

一个有符号整数,在所有平台上都保证为 64 位,类似于标准 C 的 int64_t

在新的代码中,int64_t 类型应被优先使用,除非与现有 API 的一致性要求使用 gint64(请参阅 gsize 了解更多详情)。

此类型的取值范围为 G_MININT64(= -9,223,372,036,854,775,808)到 G_MAXINT64(= 9,223,372,036,854,775,807)。

若要打印或扫描此类型的取值,请使用 G_GINT64_MODIFIER 和/或 G_GINT64_FORMAT

请注意,在具有多个 64 位标准整数类型的平台上,gint64int64_t 并不一定由相同的 64 位整数类型实现。例如,在一个 longlong long 都是 64 位的平台上,一种情况是其中一个类型用于 gint64,而另一个类型用于 int64_t。请参阅 gsize 了解更多详情,以了解这意味着什么。

G_MININT64
gint64 中可以容纳的最小值。
G_MAXINT64
gint64 中可以容纳的最大值。
G_GINT64_MODIFIER

用于扫描和打印类型为 gint64guint64 值的转换说明符的与平台相关的长度修饰符。它是一个字符串文字。

一些平台不支持打印 64 位整数,即使支持这些类型。在这种平台上, G_GINT64_MODIFIER 未定义。

对于 int64_t 值,这未必是正确的打印和扫描修饰符,即使其内存表示形式相同。用于 int64_t 的标准 C 宏(如 PRId64SCNd64)应被用于此目的。

自:2.4

G_GINT64_FORMAT

用于扫描和打印类型为 gint64 值的与平台相关的转换说明符。另请参阅 G_GINT16_FORMAT

即使支持相关类型,也有些平台不支持扫描和打印 64 位整数。在这些平台上,G_GINT64_FORMAT 未定义。请注意,即使定义了 G_GINT64_FORMATscanf() 也不一定支持 64 位整数。由于错误处理能力较弱,通常不建议使用 scanf() 进行分析;建议改用 g_ascii_strtoull()

即使内存中表示相同,这也不一定是用于打印和扫描 int64_t 值的正确格式。标准 C 宏(例如 `PRId64` 和 `SCNd64`)应用于 `int64_t`。

G_GINT64_CONSTANT(val)

此宏用于将 64 位整数文本插入源代码中。

它类似于应该在新代码中优先使用的标准 C INT64_C 宏。

guint64

保证在所有平台上为 64 位的无符号整数,类似于标准 C uint64_t 类型。

在新的代码中,应优先使用 uint64_t 类型,除非与现有 API 的一致性要求使用 guint64(有关更多详情,请参阅 gsize)。

此类型的取值范围为从 0G_MAXUINT64(= 18,446,744,073,709,551,615)。

要打印或扫描此类型的取值,请使用 G_GINT64_MODIFIER 和/或 G_GUINT64_FORMAT

请注意,在具有多个 64 位标准整数类型的平台上,guint64uint64_t不一定由相同的 64 位整数类型实现。请参阅 gsize 了解更多有关这意味着什么的详细信息。

G_MAXUINT64

guint64 中可容纳的最大值。

这与标准 C UINT64_MAX 相同,在新的代码中应优先使用 UINT64_MAX

G_GUINT64_FORMAT

这是用于扫描和打印类型 guint64 的取值的基于平台的转换说明符。另参见 G_GINT16_FORMAT

即使支持相关类型,也有些平台不支持扫描和打印 64 位整数。在这些平台上,G_GUINT64_FORMAT 未定义。请注意,即使定义了 G_GINT64_FORMATscanf() 也不一定支持 64 位整数。由于错误处理能力较弱,通常不建议使用 scanf() 进行分析;建议改用 g_ascii_strtoull()

即使内存中表示相同,这也不一定用于打印和扫描 uint64_t 值的正确修饰符。标准 C 宏(例如 `PRIu64` 和 `SCNu64`)应用于 `uint64_t`。

G_GUINT64_CONSTANT(val)

此宏用于将 64 位无符号整数文本插入源代码中。

它类似于应该在新代码中优先使用的标准 C UINT64_C 宏。

自:2.10

浮点数

gfloat

等同于标准 C float 类型。

此类型的取值范围为从 -FLT_MAXFLT_MAX,或者等同于 -G_MAXFLOATG_MAXFLOAT

G_MINFLOAT

gfloat 中可容纳的最小正值。

如果您感兴趣的是 gfloat 中可容纳的最小值,请使用 -G_MAXFLOAT

这与标准 C FLT_MIN 相同,该标准 C 自 C99 起可用,在新的代码中应优先使用。

G_MAXFLOAT

gfloat 中可容纳的最大值。

这与标准 C FLT_MAX 相同,自 C99 起提供,并且应该在新代码中优先使用。

gdouble

相当于标准 C double 类型。

此类型的取值范围从 -DBL_MAXDBL_MAX,或者从 -G_MAXDOUBLEG_MAXDOUBLE

G_MINDOUBLE

gdouble 中可以容纳的最小正值。

如果你对 gdouble 中能够容纳的最小值感兴趣,请使用 -G_MAXDOUBLE

这与标准 C DBL_MIN 相同,自 C99 起提供,并且应该在新代码中优先使用。

G_MAXDOUBLE

gdouble 中可以容纳的最大值。

这与标准 C DBL_MAX 相同,自 C99 起提供,并且应该在新代码中优先使用。

架构大小的整型

gsize

未签名整型类型的 sizeof 运算符结果,对应 C99 中定义的 size_t 类型。

除非与现有 API 的一致性要求 gsize(有关更多详细信息,请参见下方),否则在新的代码中应优先使用标准 size_t 类型。

gsize 通常在 32 位平台上为 32 位宽,在 64 位平台上为 64 位宽。此类型的取值范围从 0G_MAXSIZE

此类型足够宽以容纳最大可能内存分配的大小,但不能保证足够宽以容纳指针的数值:在使用标记指针(如 CHERI)的平台上,指针的数值大小可能大于地址空间的大小。如果需要在不丢失信息的情况下将指针的数值存储在整数中,请使用标准 C 类型 intptr_tuintptr_t,或类似的 GLib 类型 gintptrguintptr

若要打印或扫描此类型的取值,请使用 G_GSIZE_MODIFIER 和/或 G_GSIZE_FORMAT

请注意,在多个标准整数类型大小都相同的情况下,size_tgsize 的大小始终相同,但它们不一定由相同的标准整数类型实现。例如,在 intlong 和指针均为 32 位的 ILP32 平台上,size_t 可能为 unsigned long,而 gsize 可能为 unsigned int。如果两种类型不一致地使用,这可能导致编译器警告或意外的 C++ 名称修饰。

因此,在现有 API 中将类型从 gsize 更改为 size_t 可能是无法兼容的 APIABI 更改,尤其是涉及 C++ 时。安全的方法是让现有 API 继续使用历史使用的相同类型,并且仅在新 API 中使用标准 C 类型。

对于所有固定大小类型(gint8guint8gint16guint16gint32guint32gint64guint64goffset),以及 gintptrguintptr,都适用于类似的注意事项。大小为 32 位或更大的类型尤其可能受到此问题的影响。

G_MAXSIZE

gsize 中可容纳的最大值。

这与标准 C SIZE_MAX (自 C99 起提供) 相同,在新代码中应优先使用它。

自:2.4

G_GSIZE_MODIFIER

扫描和打印 gsize 类型的值的转换说明符的平台相关长度修饰符。它是一个字符串文字。

请注意,虽然内存中表示相同,但这不一定是对 size_t 进行扫描或打印的正确修饰词。如果可用与 C99 兼容的 printf 实现,则应该对 size_t 使用标准 C "z" 修饰词。

自: 2.6

G_GSIZE_FORMAT

这是用于扫描和打印 gsize 类型值的与平台相关的转换说明符。另请参见 G_GINT16_FORMAT

请注意,虽然内存中表示相同,但这不一定是对 size_t 进行扫描或打印的正确格式。如果可用与 C99 兼容的 printf 实现,则应该对 size_t 使用标准 C "zu" 格式。

自: 2.6

gssize

gsize 的有符号变体,对应于 POSIX 中定义的 ssize_t 或 Windows 中类似的 SSIZE_T

在新平台特定的代码中,请考虑直接使用 ssize_tSSIZE_T

此类型的取值范围为从 G_MINSSIZEG_MAXSSIZE

请注意,在实现 ssize_t 的平台上,ssize_tgssize 可能会由不同但相同大小的标准整型实现。类似地,在 Windows 上,SSIZE_Tgssize 可能会由不同但相同大小的标准整型实现。请参见 gsize 了解更多详细信息。

此类型也不能保证与标准 C ptrdiff_t 相同,尽管它们在许多平台上相同。

要打印或扫描此类型的取值,请使用 G_GSSIZE_MODIFIER 和/或 G_GSSIZE_FORMAT

G_MINSSIZE

gssize 中可以保存的最小值。

自: 2.14

G_MAXSSIZE

gssize 中可以保存的最大值。

自: 2.14

G_GSSIZE_FORMAT

这是用于扫描和打印 gssize 类型值的与平台相关的转换说明符。另请参见 G_GINT16_FORMAT

请注意,虽然内存中表示相同,但这不一定是对 POSIX ssize_t 或 Windows SSIZE_T 进行扫描或打印的正确格式。在 POSIX 平台上,应将 "zd" 格式用于 ssize_t

自: 2.6

G_GSSIZE_MODIFIER

用于扫描和打印 gssize 类型值的转换说明符的与平台相关的长度修饰词。这是一个字符串字面量。

请注意,虽然内存中表示相同,但这不一定是对 POSIX ssize_t 或 Windows SSIZE_T 进行扫描或打印的正确修饰符。在 POSIX 平台上,应将 "z" 修饰符用于 ssize_t

自: 2.6

goffset

用于文件偏移的有符号整型类型,对应于 POSIX 类型 off_t,就好像在编译时将 _FILE_OFFSET_BITS 设置为 64。即使在 32 位架构上,goffset 始终为 64 位宽,即使 off_t 仅为 32 位。此类型的取值范围为从 G_MINOFFSETG_MAXOFFSET

要打印或扫描此类型的取值,请使用 G_GOFFSET_MODIFIER 和/或 G_GOFFSET_FORMAT

在具有多个 64 位标准整型的平台上,即使 off_t 的大小也是 64 位,但 goffsetoff_t 也未必由相同的 64 位整型实现。请参见 gsize 以了解此意味的详细信息。

自: 2.14

G_MINOFFSET
goffset 中可以保存的最小值。
G_MAXOFFSET
goffset 中保存的最大值。
G_GOFFSET_MODIFIER

用于转换说明符的平台相关长度修饰符,用于扫描和打印 goffset 类型的变量。它是一个字符串文本。另请参阅 G_GINT64_MODIFIER

此修饰符仅应用于 goffset 值,不应用于 off_t,后者不一定是相同类型或相同大小。

自版本 2.20 起

G_GOFFSET_FORMAT

这是用于扫描和打印 goffset 类型的变量的平台相关转换说明符。另请参阅 G_GINT64_FORMAT

此格式仅应用于 goffset 值,不应用于 off_t,后者不一定是相同类型或相同大小。

自版本 2.20 起

G_GOFFSET_CONSTANT(val)

此宏用于将 goffset 64 位整数文本插入至源代码。

另请参阅 G_GINT64_CONSTANT()

自版本 2.20 起

gintptr

对应于 C99 类型 intptr_t,一种有符号整数类型,可以保留所有指针。

在新代码中,应首选标准的 intptr_t 类型,除非与现有 API 的一致性要求 gintptr。请注意,intptr_tgintptr 可能由不同标准的同等大小的整数类型实现。有关更多详细信息,请参阅 gsize

gintptr 不能保证为相同类型或相同大小的 gssize,即使它们在许多 CPU 体系结构中相同。

要打印或扫描此类型的变量,请使用 G_GINTPTR_MODIFIER 和/或 G_GINTPTR_FORMAT

自版本 2.18 起

G_GINTPTR_MODIFIER

用于转换说明符的平台相关长度修饰符,用于扫描和打印 gintptrguintptr 类型的变量。这是一个字符串文本。

请注意,即使内存中表示相同的值,也不是扫描或打印 intptr_t 的必要的修饰符。标准 C 宏(如 PRIdPTRSCNdPTR)应用于 intptr_t

自版本 2.22 起

G_GINTPTR_FORMAT

这是用于扫描和打印 gintptr 类型的变量的平台相关转换说明符。

请注意,即使内存中表示相同的值,也不是扫描或打印 intptr_t 的必要的格式。标准 C 宏(如 PRIdPTRSCNdPTR)应用于 intptr_t

自版本 2.22 起

guintptr

对应于 C99 类型 uintptr_t,一种无符号整数类型,可以保留所有指针。

在新代码中,应首选标准的 uintptr_t 类型,除非与现有 API 的一致性要求 guintptr。请注意,uintptr_tguintptr 可能由不同标准的同等大小的整数类型实现。有关更多详细信息,请参阅 gsize

guintptr 不能保证为相同类型或相同大小的 gsize,即使它们在许多 CPU 体系结构中相同。

要打印或扫描此类型的变量,请使用 G_GINTPTR_MODIFIER 和/或 G_GUINTPTR_FORMAT

自版本 2.18 起

G_GUINTPTR_FORMAT

这是用于扫描和打印 guintptr 类型的变量的平台相关转换说明符。

请注意,即使内存表示形式相同,这也不一定是正确的格式来扫描或打印 uintptr_t。应将 PRIuPTRSCNuPTR 等标准 C 宏用于 uintptr_t

自版本 2.22 起