聲明和定義--extern

聲明與定義

變量的 定義用於爲變量分配存儲空間,還可以爲變量指定初始值。在一個程

序中,變量有且僅有一個定義。
聲明用於向程序表明變量的類型和名字。定義也是聲明:當定義變量時我們
聲明瞭它的類型和名字。可以通過使用 extern 關鍵字聲明變量名而不定義它。
不定義變量的聲明包括對象名、對象類型和對象類型前的關鍵字 extern:
extern int i; // declares but does not define i
int i; // declares and defines i
extern 聲明不是定義,也不分配存儲空間。事實上,它只是說明變量定義

在程序的其他地方。程序中變量可以聲明多次,但只能定義一次。

只有當聲明也是定義時,聲明纔可以有初始化式,因爲只有定義才分配存儲
空間。初始化式必須要有存儲空間來進行初始化。如果聲明有初始化式,那麼它
可被當作是定義,即使聲明標記爲 extern:
extern double pi = 3.1416; // definition
雖然使用了 extern ,但是這條語句還是定義了 pi,分配並初始化了存儲
空間。只有當 extern 聲明位於函數外部時,纔可以含有初始化式。
因爲已初始化的 extern 聲明被當作是定義,所以該變量任何隨後的定義都
是錯誤的:
extern double pi = 3.1416; // definition
double pi; // error: redefinition of pi

聲明和定義之間的區別可能看起來微不足道,但事實上卻是舉足輕重的。
在 C++ 語言中,變量必須且僅能定義一次,而且在使用變量之
前必須定義或聲明變量。
任何在多個文件中使用的變量都需要有與定義分離的聲明。在這種情況下,
一個文件含有變量的定義,使用該變量的其他文件則包含該變量的聲明(而不是
定義)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章