我想知道使用static
關鍵字:範圍在文件限制爲變量,在C.理由使用靜態函數和變量用C
建立一個C程序,因爲我看到它是標準的方式到:
- 有一堆c文件定義函數和變量,可能範圍限於
static
。 - 有一堆h文件,聲明相應c文件的函數和可能的變量,用於其他要使用的c文件。私有函數和變量不會在h文件中發佈。
- 每個c文件分別編譯到o文件。
- 所有o文件都鏈接到一個應用程序文件。
我看到兩個原因宣告gobal爲static
,如果變量沒有在H文件公佈反正:
- 一個是可讀性。通知未來的讀者,包括我自己,一個變量不能在任何其他文件中訪問。
- 第二個是防止另一個c文件將變量重新聲明爲
extern
。我想鏈接器會不喜歡變量是extern
和static
。 (我不喜歡將文件重新聲明爲其他人擁有的變量爲extern
,是否可以練習?)
任何其他原因?
同樣適用於static
函數。如果原型文件未在h文件中發佈,其他文件可能無法使用該功能,那麼爲什麼要定義它static
呢? 我可以看到相同的兩個原因,但沒有更多。
六年後,我現在知道'靜態'不限制範圍,它給內部鏈接。如果您將翻譯單位視爲範圍,但不是正確的術語,則情況類似。 – Gauthier 2016-03-03 12:41:38