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