作者Trumen (真好多人)
看板C_and_CPP
標題[問題] global variable的問題
時間Wed Jun 9 01:02:02 2010
請問通常global variable會宣告在.cpp還是.h呢?
之前曾經將global variable寫在.h
但add Thread.cpp to project後compiler會出現warning訊息:
(ex: in main.h declare int
Variable = 0;)
[Linker Warning] Public symbol '
_Variable' defined in both module D:\TRP
CODE\TRP 5.1
\MAIN.OBJ and D:\TRP CODE\TRP 5.1\
THREAD.OBJ
後來查了網路,發現要寫成
(in main.h) extern int Variable;
(in main.cpp) int Variable = 0;
這樣子才不會有warning message產生,當中的原因是什麼呢?
還有若是我將原本在main.h的變數改成 static int Variable = 0;
也可以避免warning message產生,這又是為什麼呢?
(可以請問將variable設static的意義是?)
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.126.97.143
→ james732:第一個問題,要先知道 #include 做了什麼事情 06/09 01:04
→ james732:第二個問題可找關鍵字「file scope」 06/09 01:06
推 loveflames:因為兩個unit都有Variable,看warning就知道了吧 06/09 01:08
→ loveflames:變成重複定義 06/09 01:10
→ tinlans:因為 extern int Variable 是宣告, 06/09 01:11
→ tinlans:int Variable = 0 是定義。 06/09 01:11
推 avhacker:正解是:不要用 XD 06/09 11:08