1

我正在尝试使用函数 g_slist_append(list, &structure) 将结构添加到单链表。这似乎有效(它正在添加指针),但是在读取链表时我似乎无法找到查看结构中元素的方法。

我的结构如下所示:

 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找不到(请求非结构或联合中的成员)。

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

4

1 回答 1

4

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

这意味着您必须使用类型转换:

((struct customstruct *) list->data)->var1
于 2013-01-28T11:35:37.687 回答