84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
首先提出一個問題書上網都說變數加上static 後作用域就是當前文件,不加作用域就是整個項目是否意味著加了static 的變數只能在本文件使用?
我用一個檔案用來存放全域變數,我需要在多處使用這個全域變數, 依照書上的說法應該是不加static的, 可是會出現
错误 LNK2005 1 "XXX" (XXX) 已经在 XXX
我加上 static 就沒有問題
我用的是 VS2017
求解釋這個問題, 我用這中方法存放全域可以嗎?
走同样的路,发现不同的人生
是否表示 加了static 的變數只能在本文件使用? 是的。
平常的程式碼全域變數想怎麼用就怎麼用,但是在實際專案中,全域變數是能不用就不用,記住這一點。所以你的「把所有全域變數放在一個檔案」這種做法不可取。
你的報錯應該是重定義了,全域變數在進行obj連結過程中出現重定義,因為全域變數是外部連結屬性,也就是對所有文件可見。
哪個文件需要這個變量,你可以使其static,如果其它文件需要這個變量的值,你可以把這個變量放進類中使其成為類靜態成員變量,然後直接include該文件,A::x 引用即可。
是否表示 加了static 的變數只能在本文件使用? 是的。
平常的程式碼全域變數想怎麼用就怎麼用,但是在實際專案中,全域變數是能不用就不用,記住這一點。所以你的「把所有全域變數放在一個檔案」這種做法不可取。
你的報錯應該是重定義了,全域變數在進行obj連結過程中出現重定義,因為全域變數是外部連結屬性,也就是對所有文件可見。
哪個文件需要這個變量,你可以使其static,如果其它文件需要這個變量的值,你可以把這個變量放進類中使其成為類靜態成員變量,然後直接include該文件,A::x 引用即可。