gpt4 book ai didi

c - C/gtk+ 中的全局列表

转载 作者:行者123 更新时间:2023-11-30 16:04:28 25 4
gpt4 key购买 nike

我需要在我的 gtk+ 应用程序中使用全局列表,我使用 GList:

例如:

我有结构:

typedef struct _data
{
Glist list;
}Data;

我想在整个程序中使用该列表的一份副本:

我有一个函数构建我的列表:

gboolean build_list()
{
Data->list = g_list_append(Data->list, "First ");
Data->list = g_list_append(Data->list, "Second ");
Data->list = g_list_append(Data->list, "Third ");

g_list_foreach(Data->list, (GFunc)printf, NULL);
}

调用此函数后显示列表中的所有项目:

第一第二第三

,但是当我尝试在另一个函数中使用它时 - 例如:

void foreach()
{
g_list_foreach(Data->list, (GFunc)printf, NULL);
}

我在 gdb 中看到错误:

**程序收到信号 SIGSEGV,段错误。[切换到线程0xb7335700 (LWP 5364)]/lib/i686/cmov/libc.so.6 中的 strchrnul () 中的 0xb765a7d7**

如何在我的应用程序中创建全局列表?

谢谢。

最佳答案

typedef struct _data
{
Glist list;
} Data;

这使得 Data 成为一种类型(即,您可以通过执行 `Data data_var; 来定义 Data 类型的变量),但在您的代码中,您将其用作变量:

gboolean build_list()
{
Data->list = g_list_append(Data->list, "First ");

如果你想使用它作为一个变量,你需要将其更改为:

struct _data
{
Glist list;
} Data;

当您这样做时,Data 不是指针,因此您可以像这样访问它的数据(请注意,您使用的是 . 而不是 ->):

gboolean build_list() { Data.list = g_list_append(Data.list, "第一个");

关于c - C/gtk+ 中的全局列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com