[問題] 多重宣告

看板C_and_CPP作者 (筆)時間15年前 (2009/03/03 15:55), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
a.h --------------------- Type A; void func(); --------------------- a.cpp --------------------- #include"a.h" void func(){ } void other_func(); --------------------- main.cpp --------------------- #include"a.h" int main(){ . func(); . } --------------------- 不好意思,想請教前輩一些問題 小弟在編譯上面的程式時,出現了multiple definition的錯誤(在main.cpp) 然而我在main.cpp中並沒有額外使用到A這個變數,A這個變數只有a.cpp中的函數會用到 然後我把Type A移到a.cpp卻可以順利的編譯 小弟對compiler運作的方式不是很清楚 麻煩前輩不吝指正 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.217.27

03/03 16:13, , 1F
在板上搜尋 重複定義 就有答案了
03/03 16:13, 1F

03/03 16:43, , 2F
extern
03/03 16:43, 2F

03/03 22:53, , 3F
謝謝j大,可是還是不懂為何變數宣告不能放在.h檔 有前輩可
03/03 22:53, 3F

03/03 22:55, , 4F
以解釋一下其中的奧妙嗎
03/03 22:55, 4F
※ 編輯: apenptt 來自: 140.113.217.27 (03/03 22:57)

03/03 22:57, , 5F
和linker有關 寫在header會讓同一symbol出現在不同的
03/03 22:57, 5F

03/03 22:57, , 6F
compile unit
03/03 22:57, 6F

03/04 02:20, , 7F
先分清楚宣告和定義的差別可能會比較有幫助。
03/04 02:20, 7F
文章代碼(AID): #19hE9jjI (C_and_CPP)