2013-12-11 52 views
0

在a.h中我定義了一個結構並使用了extern Struct * struct來在其他.c文件和我的main.c文件中使用此結構的一個實例。在Eclipse中調試C中的全局變量

正在關注this guide 我點擊相同的圖標,但我得到的是一個空窗口,沒有變量列出。

我該如何解決這個問題?

A.H定義隊列:

typedef struct Queue 
{ 
    int size; 
    q_elem *root; 
} Queue; 

extern Queue **queue; 

交流轉換器定義了各種功能的隊列的典型功能。

在b.c我定義

Queue **queue; 

爲變量,並與幾個功能進行這項工作。 我工作在我的main.c文件中的同一**隊列。

我使用Eclipse 3.3.2 for Windows。

+0

顯示您的代碼。這將更容易分析。提及你所在的環境。 – ryyker

+0

完成。我可以在隊列上工作,但它不會顯示在我的調試變量中。 – Pulz

+0

道歉Putz,我正處在一個項目中,需要我所有的時間。如果你還沒有解決你的問題,甚至還有興趣,請參閱*** [這裏](http://stackoverflow.com/a/2036076/645128)***的答案。它可能有一些你需要的步驟。 (假設minGW是你的編譯器) – ryyker

回答

0

這是潛在的兩個錯誤來源的問題。 1是您正在使用的聲明類型,2是您正在使用的調試環境。

尋址2第一:在我的環境,(National Instruments的編譯器/調試器),當資源得到緊,調試開始做的並不正確片狀的東西,如顯示結構數組作爲一個單一的結構,等我在使用調試器幾個小時後纔看到這個。解決方案是關閉並重新啓動環境以重置並清除所有調試器內存。我用過的所有調試器都受到這種類型的行爲影響。

尋址1:首先,你定義結構體的方式是不可編譯的。即行:

q_elem *root; 

需要是:

struct q_elem *root; 

這本身就可以解決您的問題。但是你也可以嘗試以不同的方式創建你的結構實例。我還沒有看到你如何使用它,但我假設你想創建一個帶有外部鏈接的結構數組(可能是爲了具有項目範圍)。如果是這樣的話,試試這個:

//In header file: 

typedef struct QUEUE 
{ 
    int size; 
    struct QUEUE *root; 
}QUEUE; 

extern QUEUE queue[10], *pQueue; 

然後:

//In .c file: 

QUEUE queue[10], *pQueue; 

int main(void) 
{ 

    pQueue = &queue[0]; 

    //... 

您現在有一個指針隊列的陣列項目範圍。需要注意的是它不訪問成員*root分配內存,有關如何做到這一點一些指針(沒有雙關語意),Look Here