表格如何防止重復(fù)輸入 如何避免頭文件被重復(fù)包含?
如何避免頭文件被重復(fù)包含?#include file的一個(gè)缺點(diǎn)是頭文件可能包含多次。為了說(shuō)明這個(gè)錯(cuò)誤,請(qǐng)考慮以下代碼:#include “x.h”#include “x.h”。顯然,文件x.h包含了兩
如何避免頭文件被重復(fù)包含?
#include file的一個(gè)缺點(diǎn)是頭文件可能包含多次。為了說(shuō)明這個(gè)錯(cuò)誤,請(qǐng)考慮以下代碼:#include “x.h”#include “x.h”。顯然,文件x.h包含了兩次,沒(méi)有人會(huì)故意編寫(xiě)這樣的代碼。但是下面的代碼:#include “A.H”#include “B.H”看起來(lái)沒(méi)問(wèn)題。如果A.H和B.H都包含一個(gè)頭文件x.H,那么x.H在這里也包含了兩次,但是它的形式不是很明顯。在大多數(shù)情況下,大型程序中會(huì)出現(xiàn)多次包含,這通常需要大量的頭文件,因此不容易找到重復(fù)包含。為了解決這個(gè)問(wèn)題,我們可以使用條件編譯。如果所有頭文件都按以下方式編寫(xiě):#ifndef_uuheadername_uh#define uuheadername#則消除了多次包含的危險(xiǎn)。第一次包含頭文件時(shí),將正常處理并刪除符號(hào)uheadernameuh定義為1。如果再次包含頭文件,則條件編譯將忽略其內(nèi)容。SymbolsHEADERNAMEuh根據(jù)包含的頭文件的文件名命名,避免了其他頭文件使用同一個(gè)Symbols引起的沖突。但是,您必須記住,即使頭文件的所有內(nèi)容都將被忽略,預(yù)處理器仍會(huì)讀取整個(gè)頭文件。由于此處理會(huì)減慢編譯速度,因此應(yīng)盡可能避免包含多個(gè)內(nèi)容。
在c 中為什么要防止頭文件被重復(fù)包含?
例如,b.cpp使用b.H,然后包含它。A.cpp也使用B.H,然后包括它。然后main函數(shù)同時(shí)使用b.cpp和a.cpp中的函數(shù),因此main函數(shù)應(yīng)該包括b.H,include a.H,,,,,并且a.H已經(jīng)包括b.H