為了支援分離式編譯,c++語言將宣告和定義區分開來
宣告(declaration) 是為了讓程式為程式所知,乙個檔案如果想使用別處定義的名字則必須包含對那個名字的宣告
定義(definition) 是建立了與名字有關的實體,及分配空間或可能為變數附上初始值
變數宣告規定了變數的型別和名字,在這一點上定義與之相同
c++中,在變數名前新增extern關鍵字,並且不顯式的初始化變數,就是宣告而非定義乙個變數:
extern int i; // 宣告i而非定義它
int j; // 宣告並定義j
extern int m = 2; // 定義
在函式體內部,試圖初始化乙個由extern關鍵字標記的變數將會引發錯誤。
note: 變數只能被定義一次,但可以被宣告多次
摘自: cpp primer
C 定義與宣告 區別
c primer 第四版2.3.5節中這麼說到 變數定義 用於為變數分配儲存空間,還可為變數指定初始值。程式中,變數有且僅有乙個定義。變數宣告 用於向程式表明變數的型別和名字。定義也是宣告 當定義變數時我們宣告了它的型別和名字。extern關鍵字 通過使用extern關鍵字宣告變數名而不定義它。1....
C 宣告與定義的區別
一,宣告與定義的區別 宣告是將乙個名稱引入程式。定義提供了乙個實體在程式中的唯一描述,涉及到記憶體空間的分配以及初始值的設定。宣告和定義有時是同時存在的。1,定義也是宣告,extern宣告不是定義,即不分配儲存空間。int a 10 定義就是宣告 extern int b 宣告,不是定義 注意 如果...
C 中宣告與定義的區別
宣告 一種把乙個名稱引入或者重新引入到某個c 作用域的構造。定義 它也是一種宣告,但該宣告必須給出被宣告實體的細節。對於變數而言,這裡的細節是指 為被宣告實體保留儲存空間。對於class型別和函式定義而言,指的是包含有一隊花括號內容的宣告。對於外部變數而言,指的是前面沒有關鍵字extern或者在宣告...