1樓:匿名使用者
一般避免多重包含的方法是
#ifndef _vip_cxj_common_type_h_
#define _vip_cxj_common_type_h_
...中間寫你的**
...#endif
現在開始解釋。
#ifndef _vip_cxj_common_type_h_中的_vip_cxj_common_type_h_一般可以隨便選不是固定的。為了好記一般都是直接把你的標頭檔案名全部大寫後,“.”用“_”代替。
比如你的標頭檔案名為header.h,那麼就寫成_header_h_
其實這東西寫什麼都無所謂,但是必須是獨一無二的,所以用標頭檔案名改過來最保險。接下來聽我解釋為啥它是啥都無所謂。
根據這段巨集,如果沒定義_vip_cxj_common_type_h_,那麼定義_vip_cxj_common_type_h_,並且執行你的**。然後當你這個標頭檔案第二次被包含時,因為已經定義了_vip_cxj_common_type_h_,所以#ifndef _vip_cxj_common_type_h_(如果沒定義_vip_cxj_common_type_h_)的條件就沒能滿足,自然也不會再次編譯你if裡面的**,於是就做到了避免重複包含的功能。
當然vs編譯器還有個比較快捷的避免重複包含標頭檔案的辦法,就是在標頭檔案的開頭寫上這個:#pragma once
2樓:
#ifndef
#define ***
...(程式體)
...#endif
還有個#pxxonce什麼的忘記了,
基本用上面那種就可以了
因為這是編譯前做的預處理,如果已經處理過,就是說已經預處理過(已經定義了***),把上面的程式體包含程序序,那下次再進入這裡,因為已經define了***,那就不會被再執行了。
大概是這樣,解釋得不好,請見諒。
3樓:匿名使用者
其最基本的作用,就是避免多次編譯。
主要是在.h檔案之間應用時的一些說明
例如#ifndef unicodesourece_h /假如沒有定義unicodesourece_h
#define unicodesourece_h /那麼定義unicodesourece_h
有時候還對一些變數進行說明
#ifndef _win32_ie /假如沒有定義 _win32_ie
#define _win32_ie 0x0700 /那麼定義它的值為0x0700
#endif /結束定義
這樣的話就會有效避免重複定義
避免多次編譯,在 檔案最前面加上 program once也行
作用差不多
C語言關於迴圈中包含靜態變數,c語言for迴圈裡,static變數也能儲存值嗎?為什麼?
首先,要知道作用域的概念。c有 塊作用域,檔案作用域和函式原型作用域。詳細內容書裡面可以講一章,涉及到鏈結型別,作用域,儲存時期。這裡只說一點,你可能比較關心,看下面這個例子 include char a global void global void local int main global 將...
C 中如何讓case包含多種情況
乙個case裡面再巢狀if語句就行了。case 1 a a 3 這是不行的。case後必須跟乙個確切的數值,所以大多數情況下大家都是用幾個if語句並列使用,case不是很有用。如果你想讓a 1,2,3的時候達到同乙個結果,可以case 1 case 2 case 3 break 這樣就行了。 cas...
C 中如何讓case包含多種情況
暢凌文佔易 case後面必須跟常數表示式,不能使用邏輯判斷條件。不過你可以把多個case放在一起用,例如 case 1 case 2 case 3 執行操作 break 霜丹秋興寧 上面的寫法本身就有問題,要想用乙個語句處理多種case可以這樣寫 switch a 而對於提問者的寫法,機器是這樣理解...