#if 和 #ifdef 的區(qū)別

#define TARGET_LITTLE_ENDINA 1
#define TARGET_BIG_ENDINA   0

#ifdef TARGET_LITTLE_ENDINA
call little endina function
#else
call big endina function
#endif

不管把TARGET_LITTLE_ENDINA和TARGET_BIG_ENDINA定義成0或者1,甚至后面不寫這個(gè)0或者1 ,調(diào)用的都是little endina函數(shù),這段代碼是有問題的,就是沒有理解#if和#ifdef之間的區(qū)別。

#if的使用說明

#if的后面接的是表達(dá)式,如果表達(dá)式為1,則編譯#if下面的代碼

它的作用是:如果(MAX==10)||(MAX==20)成立,那么編譯器就會(huì)把其中的#if 與 #endif之間的代碼編譯進(jìn)去(注意:是編譯進(jìn)去,不是執(zhí)行!?。?/strong>

#ifdef的使用

#if后面接的是一個(gè)宏

這個(gè)#ifdef 它不管里面的“x”的邏輯是“真”還是“假”,它只管這個(gè)程序前面的宏定義里面有沒有定義“x”這個(gè)宏(即在這
里#define x 1和#define x 0等效,都等同于#define x),如果定義了x這個(gè)宏,那么編譯器會(huì)編譯中間的…code…否則直接忽視中間的…code…代碼。

#if defined的使用

#if defined() 的使用和#ifdef的用法一致
#if !defined()又和 #ifndef 的用法一致。

最后強(qiáng)調(diào)兩點(diǎn):
第一:這幾個(gè)宏定義只是決定代碼塊是否被編譯!
第二:別忘了#endif

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 面試題 猜一下哪段代碼會(huì)被編譯進(jìn)去,強(qiáng)調(diào)下是編譯進(jìn)去,不是執(zhí)行 答案第一段條件編譯:邏輯1會(huì)被編譯進(jìn)去第二段條件編...
    yanhooIT閱讀 10,668評(píng)論 2 9
  • C中的預(yù)編譯宏定義 2009-02-10 作者: infobillows 來源:網(wǎng)絡(luò) 在將一個(gè)C源程序轉(zhuǎn)換為可執(zhí)行...
    白水灬煮一切閱讀 1,741評(píng)論 0 5
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,264評(píng)論 0 38
  • 老百姓qaz閱讀 216評(píng)論 0 0
  • 我們都有自己的家,大家都發(fā)現(xiàn)了自己的家不知道怎么裝飾才好看。才大氣高端?!,F(xiàn)在我們公司隆重推出全屋定制裝飾,讓自己...
    Wenkesha閱讀 244評(píng)論 0 0

友情鏈接更多精彩內(nèi)容