通常,在做一個項目工程時,往往有很多很多的文件,而由于面向對象的特性,為實現模塊化和編寫出穩定的、可讀性高、易維護的、健壯的代碼,往往將類封裝起來。假如某個頭文件被多個文件包含使用,當把這些文件編譯鏈接成一個可執行文件時,就會出現大量重復定義的錯誤,而在頭文件中加#ifndef #def #endif能避免頭文件的重定義。 例:如編寫頭文件complex.h 在頭文件開頭寫上兩行:
#ifndef _COMPLEX_H_ //命名規則一般講頭文件用大寫字母并將'.'改成下劃線'_',且在最前和最后都加上'_'#define _COMPLEX_H_ //Code Block#endif這樣一個工程中有兩個文件都包含complex.h時,就不會出現重定義的錯誤了。
原因:第一次包含complex.h時由于沒有定義COMPLEX_H, if條件為真,這樣便會執行代碼塊,而當第二次包含complex.h時,由于已經定義便不會執行#ifndef COMPLEX_H #define COMPLEX_H與#endif之間的代碼塊。如此防止重復編譯(重復定義)。
在編寫程序時,我覺得不管大小,封裝類文件時都加上這個宏定義,當然,現在很多的IDE會自動生成這三行代碼。
對應的還有:
#ifdef //Code Block#endif可用于條件編譯,這在代碼的測試和調試中會用得到,有時用這種條件編譯比用輸出語句簡潔的多。
新聞熱點
疑難解答
圖片精選