看板 C_and_CPP 關於我們 聯絡資訊
請問通常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