c語言中ifndef和endif的用法

2021-08-25 11:31:15 字數 891 閱讀 1702

#ifndef x //if not define x 的簡寫

#define x   ...

程式段1//如果x沒有被巨集定義過,定義x,並編譯程式段1

#endif

程式段2//如果x已經定義過了則編譯程式段2的語句,「忽視」程式段1。

這是巨集定義的一種,它可以根據是否已經定義了乙個變數來進行分支選擇,一般用於除錯等等.實際上確切的說這應該是預處理功能中三種(巨集定義,檔案包含和條件編譯)中的一種----條件編譯。 c語言在對程式進行編譯時,會先根據預處理命令進行「預處理」。c語言編譯系統包括預處理,編譯和鏈結等部分。

條件指示符#ifndef的最主要目的是防止標頭檔案的重複包含和編譯。了解:條件編譯當然也可以用條件語句來實現。 但是用條件語句將會對整個源程式進行編譯,生成的目標**程式很長,而採用條件編譯,則根據條件只編譯其中的程式段1或程式段2,生成的目標程式較短。如果條件選擇的程式段很長,採用條件編譯的方法是十分必要的。

再看乙個例子:

#ifndef 標示1      //   語句1

#define 標示1   //語句2

#endif             //語句3

語句4 ……

語句5 ……

該段**意思是:如果標示1沒有被定義,則重定義標示1,即執行語句2、語句3、語句4、……;如果標示1已經被定義,則直接跳過語句2、語句3,直接執行語句4、語句5、……

備註:#ifndef 和 #endif 要一起使用,如果丟失#endif,可能會報錯。

參考:

C語言中a和 a

一.a 這裡我們先看看陣列名代表的是什麼,這個概念可能大家有所誤解,認為陣列名代表的就是陣列的位址,當然,陣列名代表的是乙個位址,但是關鍵是,通過這個位址,我們關注的是它能取得多大空間的資料的值。例如對於乙個char 型別的位址,我們能夠取得乙個位元組的值,對於乙個int型的位址,我們能夠取得4個位...

C語言高階 ifndef的用法

1 ifndef是 if not define 的縮寫 2 用法 ifndef x 先測試x是否被巨集定義過 define x 程式段1 如果x沒有被巨集定義過,定義x,並編譯程式段 1 else 程式段2 如果x已經定義過了則編譯程式段2的語句,忽視 程式段 1。endif 終止if 3 作用 條...

c 語言中的 和

我們使用 把巨集引數變為乙個字串,用 把兩個巨集引數貼合在一起.當巨集引數是另乙個巨集的時候,需要注意的是凡巨集定義裡有用 或 的地方巨集引數是不會再展開。下面舉兩個例項 define print f,v printf the v is f v 加上 不會替換引數,只替換其所對應的字元 int ma...