#ifndef為if not define的簡寫,是宏定義的一種,它可以根據是否已經定義了一個變量來進行分支選擇,一般用于調試等等。為預處理功能中三種(宏定義、文件包含、條件編譯)中的一種----條件編譯。
#define x
...
#endif
#ifndef x
#define x
程序段1 //如果x沒有被宏定義過,定義x,并編譯程序段 1
...
#endif
程序段2//如果x已經定義過了則編譯程序段2的語句,“忽視”程序段 1。
條件指示符#ifndef 的最主要目的是防止頭文件的重復包含和編譯。
條件編譯當然也可以用條件語句來實現。 但是用條件語句將會對整個源程序進行編譯,生成的目標代碼程序很長,而采用條件編譯,則根據條件只編譯其中的程序段1或程序段2,生成的目標程序較短。如果條件選擇的程序段很長,采用條件編譯的方法是十分必要的。