GLib 宏文档

GLib macro documentation

来自here

g_array_append_val()

#define             g_array_append_val(a,v)

Adds the value on to the end of the array. The array will grow in size automatically if necessary.

g_array_append_val() is a macro which uses a reference to the value parameter v . This means that you cannot use it with literal values such as "27". You must use variables.

Parameters

a a GArray

v the value to append to the GArray

有没有可能像这样的宏定义都不完全正确? a 不是指向 GArray 的 指针 吗?

文档的术语似乎是将指向 GArray 的指针调用为 GArray。 (IMO 不准确)。

例如看下一项:

g_array_append_vals ()

GArray *
g_array_append_vals (GArray *array,
                     gconstpointer data,
                     guint len);

Adds len elements onto the end of the array.

Parameters
array a GArray
...
Returns
the GArray

这里的数组显然是指向GArray的指针。


来自 可能的原因可能是因为无法创建 GArray 的对象。 (如果我没记错的话,它是一个不透明的指针)并且通过调用 g_array_new() 获得的新数组的类型为 GArray *.