C語(yǔ)言怎樣定義和聲明全局變量和函數(shù)最好
首先, 盡管一個(gè)全局變量或函數(shù)可以(在多個(gè)編譯單元中) 有多處“聲明”, 但是“定義” 卻只能允許出現(xiàn)一次,
C語(yǔ)言怎樣定義和聲明全局變量和函數(shù)最好
。定義是分配空間并賦初值(如果有) 的聲明。最好的安排是在某個(gè)相關(guān)的.c 文件中定義, 然后在頭文件(.h) 中進(jìn)行外部聲明, 在需要使用的時(shí)候, 只要包含對(duì)應(yīng)的頭文件即可。定義變量的.c 文件也應(yīng)該包含該頭文件, 以便編譯器檢查定義和聲明的`一致性。這條規(guī)則提供了高度的可移植性: 它和ANSI C 標(biāo)準(zhǔn)一致, 同時(shí)也兼容大多數(shù)ANSI 前的編譯器和連接器,
資料共享平臺(tái)
《C語(yǔ)言怎樣定義和聲明全局變量和函數(shù)最好》(http://www.msguai.com)。Unix 編譯器和連接器通常使用“通用模式” 允許多重定義, 只要保證最多對(duì)一處進(jìn)行初始化就可以了; ANSI C 標(biāo)準(zhǔn)稱(chēng)這種行為為“公共擴(kuò)展”, 沒(méi)有語(yǔ)帶雙關(guān)的意思。
可以使用預(yù)處理技巧來(lái)使類(lèi)似DEFINE(int, i);的語(yǔ)句在一個(gè)頭文件中只出現(xiàn)一次, 然后根據(jù)某個(gè)宏的設(shè)定在需要的時(shí)候轉(zhuǎn)化成定義或聲明。
但不清楚這樣的麻煩是否值得。如果希望讓編譯器檢查聲明的一致性, 一定要把全局聲明放到頭文件中。特別是, 永遠(yuǎn)不要把外部函數(shù)的原型放到.c 文件中: 通常它與定義的一致性不能得到檢查, 而矛盾的原型比不用還糟糕。
【C語(yǔ)言怎樣定義和聲明全局變量和函數(shù)最好】相關(guān)文章:
2.編寫(xiě)類(lèi)String 的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)