全局变量,extern和static以及命名空间的区别
生活随笔
收集整理的這篇文章主要介紹了
全局变量,extern和static以及命名空间的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
全局變量,extern和static以及命名空間的區別 ? ? ? ?全局變量只是在聲明它的文件中有效,假如在另一個文件中聲明定義了一個相同名稱的全局變量,則在后續使用這兩個變量的時候會產生名字上的沖突,解決的辦法就是將其中一個全局變量的聲明寫在未命名的命名空間中,這樣可以防止在另一個文件中使用同名變量的時候出現編譯上的錯誤。原因是未命名的命名空間的所有成員在其他文件中都是不可見的,因此也就間接的解決了不同文件中相同變量,函數的重名問題。 ? ? ? ? extern關鍵字用來聲明變量,或者函數名以及對象名在其他文件中已經定義過,它通常只是起到一個說明的作用,只是告訴編譯器這個變量來自其他文件,編譯器會根據這個它提供的變量和名字在其他文件中查找。static關鍵字和未命名空間的作用相同,是文件級別的靜態變量,也就是說它所定義的變量只能在使用它的文件中使用,而在其他文件中必須顯示的包含它才可以使用(一般是使用#include包含static所在的文件)。static與extern的區別是:static是內部鏈接,extern是外部鏈接,static定義的變量只能在此變量的文件中使用,而extern則將它所聲明的變量鏈接到其他文件,以便于鏈接器查找到此變量的定義部分。 ? ? ? ? 和extern相似的是,未命名的命名空間也是外部鏈接,在聲明未命名空間的時候,系統為每個未命名空間分配了一個名字,這樣就不會與其他文件中相同的名字產生沖突。
轉載于:https://www.cnblogs.com/sunfie/p/4394588.html
總結
以上是生活随笔為你收集整理的全局变量,extern和static以及命名空间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于找工作
- 下一篇: Object C学习笔记13-Dicti