麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

C語言中含有if的宏定義詳解

2020-02-24 14:32:28
字體:
來源:轉載
供稿:網友

關于C語言,武林小編我有自己的一些經驗,這不,現在就給大家帶來C語言中含有if的宏定義詳解,供大家交流學習,下面就跟隨武林技術小編一起來看下。

含有if的宏定義
當宏定義中含有 if 時
1) 定義如下宏
#define DC(p) if( foo(p) )fun(p)
用在下面的環境中
if(k>n)
DC(k);
else
DC(n);
宏替換后,如下
if(k>n)
if( foo(k) )
fun(k);
else
if( foo(n) )
fun( n );
可見, 原來的 if 和 else 不再配對.
2) 為了避免這類問題, 我們可以將包含if語句的宏定義為一個整體.
#define DC(p) {if( foo(p) ) fun(p);}
但是, 替換后變為
if(k>n)
{
if( foo(k) )
fun(k);
};else ...
由于else前面多了個分號, 編譯時會提示錯誤沒有與else配對的if.
3)因為這些原因, 在宏定義中, 經常會將語句序列放入 do{...}while(0)塊中.
如下
#define DC(p) do{( if( foo(p) ) fun(p); }while(0)
替換后
if(k>n)
do
{
if( foo(k) )
fun(k);
}while(0);
else
...
程序可以正常運行
4)替換方案
a)采用 ? : 表達式

#define DC(p) ( (foo(p)) ? (fun(p)):0)
b)利用布爾運算的短路徑求值屬性
#define DC(p) ( (foo(p)) && (fun(p), 1) )
參考書籍: <<代碼閱讀方法與實踐>>

以上就是武林小編分享的C語言中含有if的宏定義詳解,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 99精品视频一区二区三区 | 538在线精品| 综合在线视频 | 黄色毛片18 | 亚洲人成网在线观看 | 国产亚洲精品久久久久5区 男人天堂免费 | 国产精品18久久久久久久 | 国产精品91久久久 | 黄色大片在线免费看 | 欧美毛片 | 一级做受毛片免费大片 | 草免费视频 | 日本精品黄色 | 欧美在线中文字幕 | 久久精品欧美一区二区 | 全黄性性激高免费视频 | wwwav国产| 在线播放污 | 成人性视频免费网站下载软件 | 欧美色另类 | 精品av在线播放 | 成人午夜小视频 | av噜噜在线 | 精品国产一区二区三区在线观看 | 久久人人爽人人爽人人片av高清 | 久久精品久久精品国产大片 | 免费久久久 | av国产在线被下药迷网站 | 97zyz成人免费视频 | 北原夏美av | 久久精品成人 | 国产精品成人免费一区久久羞羞 | 九色91视频 | 欧美a久久 | 成人视屏免费看 | 亚洲精品成人久久 | 高清一区二区在线观看 | 日日草夜夜 | 曰批全过程40分钟免费视频多人 | 国产剧情在线观看一区二区 | 国产一级性生活视频 |