【正文】
么這些聲明指的是同一個(gè)函數(shù),鏈接后是同一個(gè)global符號(hào),代表同一個(gè)地址。 pushstack(a)。 extern int isempty(void)。編譯器往往不知道去哪里找函數(shù)定義,像上面的例子,編譯器無(wú)法知道,因此可以用extern聲明。}return 0。pushstack(a)。 } int popstack(){return [ ]。stack s。 //relocation type} elf32_rel。 //section header index, abs, undef, or mon}elf_symbol。 //section offset, or vm address int size。無(wú)論是身處學(xué)校還是步入社會(huì),大家都嘗試過(guò)寫(xiě)作吧,借助寫(xiě)作也可以提高我們的語(yǔ)言組織能力。 //string table offset int value。 //unused char section。 //offset of the reference to relocateint symbol:24, //symbol the reference point totype:8。} stack。count ++。int main(){a = b = 1。while (!isempty()) {printf(%dn, popstack())。 int isempty(void)。 extern int popstack(void)。 pushstack(b)。 }這樣編譯器就不會(huì)報(bào)警了。 int main(void) { foo()。凡是被多次聲明的變量或函數(shù),必須有且只有一個(gè)聲明是定義,如果有多個(gè)定義,或者一個(gè)定義都沒(méi)有,鏈接器就無(wú)法完成鏈接,則可以用extern聲明includeint a, b。extern int count。pushstack(a)。}變量count具有external linkage, int count。用static關(guān)鍵字聲明具有internal linkage的函數(shù)和關(guān)鍵字是處于保護(hù)內(nèi)部狀態(tài)的目的,也是一種封裝(encapsulation)的思想。} stack。endif這樣,而不需要寫(xiě)三個(gè)函數(shù)聲明了:includeinclude int a, b。pushstack(b)。}return 0?!綾語(yǔ)言中的鏈接編寫(xiě)】相關(guān)文章:(char)7. c語(yǔ)言中的指針解讀