C語言為什么要盡量少用全局變量


在程序鏈接時,鏈接器只關心函數和全局變量,鏈接器把它們識別為符號,來進行鏈接。注意,高級語言中的函數重載僅僅是語法糖,本質是不同的函數

強符號:函數和已初始化的全局變量
弱符號:未初始化的全局變量

  • 不允許有多個強符號。如下,編譯器會報錯
//a.c中定義的全局變量i int i = 10; //b.c中定義的全局變量i double i = 10;
  • 若有1個強符號和多個弱符號,則選擇強符號。如下,不會報錯
//a.c中定義的全局變量i int i = 10; //b.c中定義的全局變量i double i;
  • 若有多個弱符號,隨機從它們里面選一個。如下,不會報錯
//a.c中定義的全局變量i int i; //b.c中定義的全局變量 double i;
  • 由此可看出,濫用全局變量很危險,所以應該盡量避免全局變量,或使用static修飾。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM