c語言防止頭文件重復 頭文件被多次包含是什么意思?
頭文件被多次包含是什么意思?一些頭文件的重復包含只會增加編譯工作的工作量,不會引起太多問題。這只是低效的編譯。某些頭文件的重復包含會導致錯誤,例如在頭文件中定義全局變量(雖然不建議使用此方法,但C規(guī)范
頭文件被多次包含是什么意思?
一些頭文件的重復包含只會增加編譯工作的工作量,不會引起太多問題。這只是低效的編譯。某些頭文件的重復包含會導致錯誤,例如在頭文件中定義全局變量(雖然不建議使用此方法,但C規(guī)范允許使用此方法)如果頭文件包含在循環(huán)中,則取決于編譯器。有些會智能地處理它,就像include one一樣,有些會報告錯誤,有些會死鎖,導致編譯器崩潰(只有非常低級的編譯器才能看到它)。不管怎樣,使用ifnde XXX#define XXX或其他方法來避免頭文件的重復包含只有好處沒有壞處是個好習慣
~]?include文件的缺點是頭文件可能被多次包含。要說明此錯誤,請考慮以下代碼:?包括“x.h”?包括“x.h”?顯然,文件x.h包含了兩次,沒有人會故意編寫這樣的代碼。但是下面的代碼:#include “A.H”#include “B.H”看起來沒問題。如果A.H和B.H都包含一個頭文件x.H,那么x.H在這里也包含了兩次,但是它的形式不是很明顯。在大多數(shù)情況下,大型程序中會出現(xiàn)多次包含,這通常需要大量的頭文件,因此不容易找到重復包含。為了解決這個問題,我們可以使用條件編譯。如果所有頭文件都按以下方式編寫:#ifndef_uuheadername_uh#define uuheadername#則消除了多次包含的危險。第一次包含頭文件時,將正常處理并刪除符號uheadernameuh定義為1。如果再次包含頭文件,則條件編譯將忽略其內容。SymbolsHEADERNAMEuh根據(jù)包含的頭文件的文件名命名,避免了其他頭文件使用同一個Symbols引起的沖突。但是,您必須記住,即使頭文件的所有內容都將被忽略,預處理器仍會讀取整個頭文件。由于此處理會減慢編譯速度,因此應盡可能避免包含多個內容。
如何避免頭文件被重復包含?
例如,b.cpp使用b.H,然后包含它。A.cpp也使用B.H,然后包括它。然后main函數(shù)同時使用b.cpp和a.cpp中的函數(shù),因此main函數(shù)應該包括b.H,include a.H,,,,,并且a.H已經(jīng)包括b.H