#ifndef, #define, #endif 作用


#ifndef
它是if not define 的簡寫,是宏定義的一種,確切的說,是預處理功能三種(宏定義、文件包含、條件編譯)中的一種----條件編譯。
在c語言中,對同一個變量或者函數進行多次聲明是不會報錯的。
所以如果h文件里只是進行了聲明工作,即使不使用# ifndef宏定義,多個c文件包含同一個h文件也不會報錯。
 
但是在c++語言中,#ifdef的作用域只是在單個文件中。
如果h文件里定義了全局變量,即使采用#ifdef宏定義,多個c文件包含同一個h文件還是會出現全局變量重定義的錯誤。
加了#ifndef,則不會出現這種錯誤。
 
示例:
#ifndef x                 //先測試x是否被宏定義過
#define x
    程序段1blabla~    //如果x沒有被宏定義過,定義x,並編譯程序段 1
#endif
    程序段2blabla~   //如果x已經定義過了則編譯程序段2的語句,“忽視”程序段 1
 
條件指示符#ifndef 的最主要目的是防止頭文件的重復包含和編譯。
 
了解:條件編譯當然也可以用條件語句來實現。 但是用條件語句將會對整個源程序進行編譯,生成的目標程序程序很長。
而采用條件編譯,則根據條件只編譯其中的程序段1或程序段2,生成的目標程序較短。
如果條件選擇的程序段很長,采用條件編譯的方法是十分必要的。
 
#ifndef 和 #endif 要一起使用,如果丟失#endif,可能會報錯。
 
文章引用自各路高手的博文,在此一並感謝,謝謝諸位的知識共享。
該博文不是我的原創,我只是搬運工!
如果發布內容有侵權行為,請與我聯系,我核實以后將刪除所有侵權內容,謝謝!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM