十年網站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網站問題一站解決
為了能夠把程序分成多個邏輯部分來進行編寫。C++支持分離式編譯1機制,這個機制使我們可以將程序分割成若干個文件,每個文件都可以被獨立編譯。

那我們將一整個程序切割成了多個文件,為了使這些文件聯(lián)系起來,則肯定需要有一種文件間可以共享代碼的方式。例如,一個文件的代碼可能需要使用另一個文件中定義的變量。
一個實際的例子是,std::cout 和 std::cin 它們都定義于標準庫,卻能夠被我們寫的程序所使用。
為了支持分離式編譯,C++將聲明與定義區(qū)分開來。聲明使得名字被程序所知,一個程序如果想要使用別的文件所定義的名字,就要包含對那個名字的聲明,而定義是負責創(chuàng)建名字所對應的實體。
變量聲明規(guī)定了變量的類型與名字,在這一點上定義與之相同,除此之外,定義還申請了變量類型所對應的內存空間,也有可能對變量賦予了初始值。
如果想要聲明一個變量而不去定義它,就需要在變量類型前加上extern關鍵字,而且不要顯式的去初始化變量。
extern int a; //聲明變量a
int b; //聲明并定義b;
extern int c = 5; //定義c,并給c賦初始值5。如果c是全局變量,則會被編譯器給予警告,
//‘extern’變量有一個初始值。如果是在函數(shù)體內部,則會直接報錯。任何初始化了的變量都會成為定義。我們可以給extern的變量加上一個初始值,但這同樣也抵消了extern關鍵字的作用,使這個聲明成為了一個定義。在函數(shù)體內,初始化一個extern變量將會引發(fā)錯誤。
如果在多個文件中需要用到同樣的變量,就必須將變量的聲明與定義分開來寫。變量的定義必須出現(xiàn)在且只能出現(xiàn)在同一個文件之中,而其他需要用到這個變量的文件,則需要對這個變量進行聲明。
一個變量可以被聲明無數(shù)次,但只能被定義一次。這一點非常重要!??!
總結聲明與定義的區(qū)別在于,聲明是讓變量的名字和類型被程序所知,而定義比聲明多申請了一個內存空間。要想只聲明而不定義變量,就需要在變量類型前加上extern關鍵字。否則就是聲明且定義。任何初始化過的變量都是定義。
??注意:這里只是在將變量的聲明與定義的區(qū)別。和函數(shù)的定義與聲明不同。不要混淆了?。。?/p>額外的小知識。
函數(shù)也可以多次聲明,但函數(shù)的聲明和變量的區(qū)別在于,函數(shù)的聲明不需要在函數(shù)類型前加extern關鍵字,而是省略了函數(shù)體。
void count();//聲明了count這個函數(shù)
void count();//重復聲明,不會報錯。分離式編譯模式源于C語言,在C++語言中繼續(xù)沿用。簡單地說,分離編譯模式是指:一個程序(項目)由若干個源文件共同實現(xiàn),而每個源文件單獨編譯生成目標文件,最后將所有目標文件連接起來形成單一的可執(zhí)行文件的過程。 ??
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧