2014-01-30 40 views
1

什麼是正確的說一下全局變量:全球範圍內VS文件範圍

如果沒有static關鍵字聲明:

  1. file scopeexternal linkage
  2. program scope是可見到程序中的所有文件

如果用static聲明關鍵字:

  1. global scopeinternal linkage
  2. file scopeinternal linkage

又是怎樣與此相關的全局命名空間範圍是什麼?

這個概念真的令人困惑,雖然我認爲我理解它是如何工作的,但在不同的地方他們用不同的方式稱它,所以我不知道哪個是正確的。

回答

1

第一個問題的答案都是不正確的。

該變量確實具有外部連接,但只有在其中聲明時纔會在其他程序單元中顯示。

至於第二個問題,那麼變量確實會有文件範圍和內部鏈接。

在某些明確指定的名稱空間之外聲明的任何變量都被認爲是在全局名稱空間中聲明的。可以在包括全局名稱空間的任何名稱空間中聲明具有外部或內部鏈接的變量。

我們正在談論在任何函數之外聲明的變量。

+0

對於第一個問題,第一個答案:我的意思是文件範圍''但是'它可以通過聲明爲'extern'從其他翻譯單元'引用'。所以當使用文件和全局範圍的概念時會產生混淆。說文件範圍和外部鏈接還是全球範圍是正確的,如果我們想從其他翻譯單位參考我們宣佈它,以便我們可以使用它? – LearningMath

+0

可以說一個變量具有全局範圍。但同時它可以在任何名稱空間中聲明, –