結構

2012-01-17 43 views
0

我有結構的全局數組宣佈EXTERN陣列結構

struct _links link[255][255][255]; 
在我main.c中

結構的這種陣列還用於在另一個文件中,action.c,我試圖宣佈它在action.c作爲一個外部,即

extern struct _links link[255][255][255]; 

然而,我得到的錯誤消息「陣列型具有不完整的元件類型」。我不明白這意味着什麼。我該如何解決這個問題?

謝謝。

+0

你包括包含在第二個文件'_links'的定義文件? – 2012-01-17 11:12:15

回答

3

在頭文件中定義你的結構struct _links;在my_main.c和action.c中包含它們,分別編譯並鏈接它們。

它的工作原理沒有用於內置數據類型的頭文件。但對於用戶定義的數據類型,頭文件是必需的。

+0

請注意,造成這種情況的主要原因是,如果沒有'struct _links'的完整定義,編譯器無法知道action.c中數組元素的大小和對齊方式。 – pmdj 2012-01-17 12:04:17

2

您必須在某處聲明struct _links類型。

1

良好的編程習慣是創建一個包含

extern struct _links link[255][255][255]; 

包括雙方的main.c和action.c文件的新文件links.h。

不要忘記只定義一次變量。

約extern關鍵字更多的信息,看看這個帖子https://stackoverflow.com/a/1433387/1117720