2010-06-12 34 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模塊, 「第一」);