#if defined和#if !defined(c語言的宏定義)

#if defined和#if !defined(c語言的宏定義)

因爲對於一個大程序而言,我們可能要定義很多常量( 不管是放在源文件還是頭文件 ),那麼我們有時考慮定義某個常量時,我們就必須返回檢查原來此常量是否定義,但這樣做很麻煩.if defined宏正是爲這種情況提供瞭解決方案.舉個例子,如下: 
#define .... 
#define .... 
    .... 
    .... 
#define a 100 
    .... 
此時,我們要檢查a是否定義(假設我們已經記不着這點了),或者我們要給a一個不同的值,就加入如下句子 
#if defined a 
#undef a 
#define a 200 
#endif 
上述語句檢驗a是否被定義,如果被定義,則用#undef語句解除定義,並重新定義a爲200 

同樣,檢驗a是否定義: 
#ifndef a    //如果a沒有被定義 
#define a 100 
#endif 

以上所用的宏中:#undef爲解除定義,#ifndef是if not defined的縮寫,即如果沒有定義。 

這就是#if defined 的唯一作用!

1) 
#if defined XXX_XXX 
#endif 
是條件編譯,是根據你是否定義了XXX_XXX這個宏,而使用不同的代碼。 

一般.h文件裏最外層的 
#if !defined XXX_XXX 
#define XXX_XXX 
#endif 
是爲了防止這個.h頭文件被重複include。 

2) 
#error XXXX 
是用來產生編譯時錯誤信息XXXX的,一般用在預處理過程中; 
例子: 
#if !defined(__cplusplus) 
#error C++ compiler required. 
#endif 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章