日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

#if 和#ifdef的区别

發布時間:2025/4/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 #if 和#ifdef的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天也碰到這個問題,使用#ifdef xxx 想選擇編譯一段代碼,最后發現#ifdef 并不判斷條件真假,只看是否前面有define,下面轉自?

http://blog.csdn.net/zhangchiytu/article/details/7563329



參加華為的面試,竟然才發現#if 和#ifdef是有區別的,絕得無地自容。趕緊整理一下

? ?先看個例子:

#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_ENDINATARGET_BIG_ENDINA定義成0或者1,甚至后面不寫這個0或者1 ,調用的都是little endina函數,這段代碼是有問題的,就是沒有理解#if和#ifdef之間的區別。

#if的使用說明

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

#if (MAX==10)||(MAX==20)code... #endif

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


#ifdef的使用

#if后面接的是一個

#ifdef (x)...code... #endif

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

#if defined的使用

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

最后強調兩點:
第一:這幾個宏定義只是決定代碼塊是否被編譯!
第二:別忘了#endif

明白了之間的區別問題就變得非常的容易,修改上述代碼只要把其中的#ifdef改成#if就可以達到目的。

總結

以上是生活随笔為你收集整理的#if 和#ifdef的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。