2014-06-18 67 views
0

我需要定義多個變量(全局變量),這些變量將被許多.c文件使用。變量,如String數組,指針文件,廉政等定義全局變量,將被多個.c文件使用

現狀:FileX.h

不同的C文件(FILEA,FILEB,Filec日)與獨立-c選項編譯(FileX.h已包含所有)然後通過組合它們再次編譯一些文件。當這些單獨編譯時沒有彈出錯誤,但是當它們被編譯在一組(FileA.o, FileB.o and FileC.o)中時,彈出錯誤。有什麼辦法可以解決它。我想用extern解決這個問題,但似乎這也會彈出錯誤。

有什麼建議嗎?

我不想在每個.c文件

定義變量我有String數組,所以我不想去界定每一個文件

+0

什麼錯誤? – RedX

+0

'重複定義:在此文件A中定義的變量a。 ' – Merom

+0

最好的解決辦法是在一個'.c'文件中定義所有變量,並在一個'.h'文件中將這些變量外部化。所以你可以通過包含'.h'文件在任何'.c'文件中訪問這些變量。 –

回答

1

我假設你多重定義錯誤,因爲你的頭看起來像

global_variables.h

int global_a = 10; 
int const global_b = 20; 

你需要的是

global_variables.h

extern int global_a; 
extern int const global_b; 

global_variables.c

int global_a = 10; 
int const global_b = 20; 

編輯:進一步的解釋:

現在需要的全局變量的所有其他文件所有你需要的是:

other_f ile.c

#include "global_variables.h" 
void some_func(void){ 
    global_a = 5; /* ready to use */ 
} 

other_awesome_file.c

#include "global_variables.h" 
/* and now you can use all globals */ 
+0

你沒有得到我的觀點,我不想在每個文件中定義變量。 – Merom

+0

除此之外的其他建議? – Merom

+0

@Merom:在你的頭文件中使用這個結構:#ifndef #define <相同的MACRO> ... <頭文件內容> #endif' –