ifndef 的使用方法

2021-08-20 05:51:40 字數 1124 閱讀 9011

ifndef是 if not define 的縮寫,一種巨集定義。它是預處理功能中三種(巨集定義,檔案包含和條件編譯)中的第三種--條件編譯。

其使用方式是:

#define x

#endif

//c語言在對程式進行編譯時,會先根據預處理命令進行預處理,c語言編譯系統包括預處理,編譯和鏈結等部分。

#ifndef x  //先測試是否被巨集定義過

#define x 

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

#else

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

#endif

條件指示符#ifndef的最主要目的是防止標頭檔案的重複包含和編譯。

語句1 #ifndef 標識1

語句2 #define 標識1

語句3 #endif

語句4 ……

語句5 ……

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

ifndef和endif要一起使用,不能存在丟失。

假如你有乙個c原始檔,它包含了多個標頭檔案,比如標頭檔案a和標頭檔案b,標頭檔案b又包含了標頭檔案a,則最終該原始檔包含了兩次標頭檔案a。如果你在標頭檔案a裡定義了結構體或者類型別(這是最常見的情況),那麼問題來了,編譯時會報大量的重複定義錯誤。[1]

例如要編寫標頭檔案a.h

在標頭檔案開頭寫上兩行:

#ifndef _a_h

#define _a_h//一般是檔名的大寫

標頭檔案結尾寫上一行:

#endif

這樣乙個工程檔案裡同時包含兩個test.h時,就不會出現重定義的錯誤了。

當第一次包含test.h時,由於沒有定義_test_h,條件為真,這樣就會包含(執行)#ifndef _test_h和

#endif之間的**,當第二次包含test.h時前面一次已經定義了_test_h,條件為假,#ifndef _test_h和

#endif之間的**也就不會再次被包含,這樣就避免了重定義了.

這樣我們把頭檔案的內容都放在#ifndef和#endif中。不管你的標頭檔案會不會被多個檔案引用,你最好是都加上這個。

pythonpip使用方法 pip使用方法整理

匯出專案已安裝的pip包 pip list 檢視專案中安裝的包 pip freeze requirements.txt 將專案中所用到的第三方庫輸出到requirements.txt中 pip install 版本號 pip install i 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...

機械秒錶的使用方法 秒錶的使用方法!

秒錶是一種常用的測時儀器。又可稱 機械停表 由暫停按鈕 發條柄頭 分針等組成。它是利用擺的等時性控制指標轉動而計時的。它是利用擺的等時性控制指標轉動而計時的。在它的正面是乙個大表盤,上方有乙個小表盤 圖1.4 2 秒針沿大表盤轉動,分針沿小表盤轉動。分針和秒針所指的時間和就是所測的時間間隔。在表正上...

使用方法 離型劑使用方法

1 使用離型劑前必須確保模具乾淨,無粉塵 蠟垢 樹脂垢 油汙等殘留物質。可以使用專用的模具潔模劑進行清洗,不可用其他液體清洗,以免清洗不乾淨或損壞模具。另外,如果您的模具是新的,在清洗乾淨後,務必要對模具進行初步處理,用離型劑在模具表面噴 刷塗5 6次,之後方可正常投入生產。2 使用離型劑時,首先要...