XXX被多次定義的問題
阿新 • • 發佈:2019-01-27
在標頭檔案中定義瞭如下字元陣列
char type_chunk[20] = "chunk";
char type_read[20] = "read";
char type_hash[20] = "hash";
char type_dedup[20] = "dedup";
char type_restore[20] = "restore";
char type_rewrite[20] = "rewrite";
char type_trace[20] = "trace";
char type_container[20] = "container";
char type_restore_chunk[20] = "res_chunk";
char type_restore_recipe[20] = "res_recipe";
且工程中的每個.c檔案都包含了此.h檔案
結果出現了各種被多次定義的錯誤提示
如下:
原因是標頭檔案被多次編譯
有以下幾種方法可以改:
1、在標頭檔案中宣告,在主函式的c檔案中定義
int g_number; // 定義式,不管你放在哪裡,它也是定義式。定義式需要分配記憶體,所以一個變數的定義式應該只有一個,而且只能有一個。你的標頭檔案被多處包含,相當於定義了多個定義式,所以報錯是必然的。
extern int g_number; // 宣告式,不分配記憶體,可以有N多個。放在標頭檔案中,被包含多次,無所謂
2、在每個用到的c檔案定義一遍(這樣就不是全域性變量了)
因為我需要用到的只是這個字串的值,不需要改變其內容。但是這種方法太原始,不建議採用。。
3、直接用difine
既然只需要用值,直接define簡單的多呀,又不會出錯
over