作者apenptt (筆)
看板C_and_CPP
標題[問題] 多重宣告
時間Tue Mar 3 15:55:24 2009
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
1F:→ jazz97925:在板上搜尋 重複定義 就有答案了 03/03 16:13
2F:推 legnaleurc:extern 03/03 16:43
3F:→ apenptt:謝謝j大,可是還是不懂為何變數宣告不能放在.h檔 有前輩可 03/03 22:53
4F:→ apenptt:以解釋一下其中的奧妙嗎 03/03 22:55
※ 編輯: apenptt 來自: 140.113.217.27 (03/03 22:57)
5F:推 legnaleurc:和linker有關 寫在header會讓同一symbol出現在不同的 03/03 22:57
6F:→ legnaleurc:compile unit 03/03 22:57
7F:→ tinlans:先分清楚宣告和定義的差別可能會比較有幫助。 03/04 02:20