#ifndef/#define/#endif使用詳解

想必很多人都看過“頭文件中的 #ifndef/#define/#endif 防止該頭文件被重復(fù)引用”贺归。但是是否能理解“被重復(fù)引用”是什么意思?是不能在不同的兩個(gè)文件中使用include來包含這個(gè)頭文件嗎师崎?如果頭文件被重復(fù)引用了,會(huì)產(chǎn)生什么后果椅棺?是不是所有的頭文件中都要加入#ifndef/#define/#endif 這些代碼犁罩?

其實(shí)“被重復(fù)引用”是指一個(gè)頭文件在同一個(gè)cpp文件中被include了多次齐蔽,這種錯(cuò)誤常常是由于include嵌套造成的。比如:存在a.h文件#include "c.h"而此時(shí)b.cpp文件導(dǎo)入了#include "a.h" 和#include "c.h"此時(shí)就會(huì)造成c.h重復(fù)引用床估。

頭文件被重復(fù)引用引起的后果:
有些頭文件重復(fù)引用只是增加了編譯工作的工作量含滴,不會(huì)引起太大的問題,僅僅是編譯效率低一些丐巫,但是對于大工程而言編譯效率低下那將是一件多么痛苦的事情蛙吏。
有些頭文件重復(fù)包含,會(huì)引起錯(cuò)誤鞋吉,比如在頭文件中定義了全局變量(雖然這種方式不被推薦,但確實(shí)是C規(guī)范允許的)這種會(huì)引起重復(fù)定義励烦。

是不是所有的頭文件中都要加入#ifndef/#define/#endif 這些代碼谓着?
答案:不是一定要加,但是不管怎樣坛掠,用ifnde xxx #define xxx#endif或者其他方式避免頭文件重復(fù)包含赊锚,只有好處沒有壞處。個(gè)人覺得培養(yǎng)一個(gè)好的編程習(xí)慣是學(xué)習(xí)編程的一個(gè)重要分支屉栓。

下面給一個(gè)#ifndef/#define/#endif的格式:
#ifndef A_H意思是"if not define a.h"  如果不存在a.h
接著的語句應(yīng)該#define A_H  就引入a.h
最后一句應(yīng)該寫#endif   否則不需要引入

#ifndef GRAPHICS_H // 防止graphics.h被重復(fù)引用 
#define GRAPHICS_H 


#include <math.h> // 引用標(biāo)準(zhǔn)庫的頭文件 
… 
#include “header.h” // 引用非標(biāo)準(zhǔn)庫的頭文件 
… 
void Function1(…); // 全局函數(shù)聲明 
… 
class Box // 類結(jié)構(gòu)聲明 
{ 
… 
}; 
#endif
--------------------------------------------------------------------------------------------------

http://blog.csdn.net/abc5382334/article/details/18052757

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舷蒲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子友多,更是在濱河造成了極大的恐慌牲平,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件域滥,死亡現(xiàn)場離奇詭異纵柿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)启绰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門昂儒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人委可,你說我怎么就攤上這事渊跋。” “怎么了着倾?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵拾酝,是天一觀的道長。 經(jīng)常有香客問我屈呕,道長微宝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任虎眨,我火速辦了婚禮蟋软,結(jié)果婚禮上镶摘,老公的妹妹穿的比我還像新娘。我一直安慰自己岳守,他們只是感情好凄敢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著湿痢,像睡著了一般涝缝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上譬重,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天拒逮,我揣著相機(jī)與錄音,去河邊找鬼臀规。 笑死滩援,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的塔嬉。 我是一名探鬼主播玩徊,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谨究!你這毒婦竟也來了恩袱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胶哲,失蹤者是張志新(化名)和其女友劉穎畔塔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纪吮,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俩檬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碾盟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棚辽。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖冰肴,靈堂內(nèi)的尸體忽然破棺而出屈藐,到底是詐尸還是另有隱情,我是刑警寧澤熙尉,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布联逻,位于F島的核電站,受9級特大地震影響检痰,放射性物質(zhì)發(fā)生泄漏包归。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一铅歼、第九天 我趴在偏房一處隱蔽的房頂上張望公壤。 院中可真熱鬧换可,春花似錦、人聲如沸厦幅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽确憨。三九已至译荞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間休弃,已是汗流浹背吞歼。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塔猾,地道東北人浆熔。 一個(gè)月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像桥帆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子慎皱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容