2010-06-12 81 views
0

我需要在全局列表在我的GTK +应用程序,我用它为Glist:全球清单/ GTK +

例如:

我有结构:

typedef struct _data 
{ 
    Glist list; 
}Data; 

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

我有一个函数bulid我的名单:

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)] 0xb765a7d7从/lib/i686/cmov/libc.so.6 **

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

谢谢。

回答

1
typedef struct _data 
{ 
    Glist list; 
} Data; 

这使得Data一个类型(比如,你可以通过做`数据data_var定义Data类型的变量),但在你的代码中使用它作为一个变量:

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

如果要使用它是一个变量,你需要改变的东西:

​​3210

当你这样做,Data不是指针,所以你会访问它的数据是这样(N otice你正在使用的不是.->)认为:

gboolean build_list(){ = Data.List模块g_list_append(Data.List模块, “第一”);