添加自定义结构GSList与油嘴(Adding custom structure to GSList

2019-10-17 15:27发布

我想一个结构添加到与功能g_slist_append(列表,和结构)的单链表。 这似乎是工作(它的加入指针),但我似乎无法找到一种方法读取链表时查看该结构中的元素。

我的结构是这样的:

 struct customstruct
 {
   int var1;
   int var2;
   char *string_1;
 }

然后,我做一个清单: GSList *list = NULL;

然后,我附上这样的结构的一个实例:

 struct customstruct list_entry;
 list_entry.var1 = 1;
 list_entry.var2 = 2;
 list_entry.string_1 = "String";

 list = g_slist_append(list, &entry);

 printf("Entry var1 = %d\n", list->data->var1);

因为最后一行失败var1无法找到(会员要求的东西不是一个结构或联合)。

我想我需要将它转换为正确的类型,但我不知道怎么办。 任何人?

Answer 1:

我猜data的成员GSList结构是一个void指针,即指针能够指向任何东西,但没有任何其他类型的信息。

这意味着你必须使用类型强制转换:

((struct customstruct *) list->data)->var1


文章来源: Adding custom structure to GSList with Glib