首頁  >  問答  >  主體

c++ - 全域變數 該如何存放?

首先提出一個問題
書上網都說變數加上static 後作用域就是當前文件,不加作用域就是整個項目
是否意味著加了static 的變數只能在本文件使用?

我用一個檔案用來存放全域變數,我需要在多處使用這個全域變數, 依照書上的說法應該是不加static的, 可是會出現

错误    LNK2005    1    "XXX" (XXX) 已经在 XXX 

我加上 static 就沒有問題

我用的是 VS2017

求解釋這個問題, 我用這中方法存放全域可以嗎?

怪我咯怪我咯2687 天前1295

全部回覆(1)我來回復

  • 三叔

    三叔2017-07-03 11:44:03

    是否表示 加了static 的變數只能在本文件使用? 是的。

    平常的程式碼全域變數想怎麼用就怎麼用,但是在實際專案中,全域變數是能不用就不用,記住這一點。所以你的「把所有全域變數放在一個檔案」這種做法不可取。

    你的報錯應該是重定義了,全域變數在進行obj連結過程中出現重定義,因為全域變數是外部連結屬性,也就是對所有文件可見。

    哪個文件需要這個變量,你可以使其static,如果其它文件需要這個變量的值,你可以把這個變量放進類中使其成為類靜態成員變量,然後直接include該文件,A::x 引用即可。

    回覆
    0
  • 取消回覆