作者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