今天在寫程式的時候遇到這樣乙個問題:
我的工程分為
main.cpp
paint.cpp
file.cpp
struct.h
最初的想法是在標頭檔案中把結構體和所有的資料定義出來,如果哪個cpp檔案用到了這些東西,直接加入該標頭檔案就好了,結果報錯——
經過查資料,發現將資料定義在標頭檔案中,如果多個cpp同時對該標頭檔案進行編譯,則會出現多次定義的情況,即重定義。這在c程式中是不允許的。
較好的解決方法是,在第一次用到某資料或函式的cpp中進行宣告與定義,而在標頭檔案中使用extern來進行宣告。c語言允許多次宣告。這樣如果有另外的cpp需要使用這個變數或函式,只要加上宣告了該變數或函式的標頭檔案即可。
C C 中宣告與定義
宣告不分配記憶體空間,宣告只是告訴編譯器存在乙個名字是xx的變數 函式 結構體等等。宣告一般寫在標頭檔案中。定義分配記憶體空間,宣告的變數 函式 結構體等就可以在程式中使用了。宣告一般寫在原始檔中。3 變數 int a 1 int b 1 2 在c中,1 沒有進行初始化,將其視為單純的宣告或者 臨時...
C C 宣告與定義
變數的定義 definition 用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義 變數的宣告 declaration 用於向程式表明變數的型別和名字。定義也是宣告 當定義變數時我們宣告了它的型別和名字。可以通過使用extern關鍵字宣告變數名而不定義它。有分配空間...
C C 宣告與定義
declaration 宣告 指將乙個名稱引入當前編譯單元,或者重新宣告乙個前面已經宣告過的名稱,宣告指定了如何解釋乙個名稱和該名稱具有的屬性 例如 int main definition 定義 除了以下情況,宣告就是定義 a.宣告函式但不包括函式體 b.宣告包含extern鏈結限定符,例如 ext...