a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 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的宏定義詳解,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

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

圖片精選

主站蜘蛛池模板: 国产精品伦理一区二区 | 欧美日韩高清免费 | 免费国产视频 | 欧美2区| 欧美日韩国产一区二区三区不卡 | 欧美日韩在线第一页 | 日本不卡视频 | 欧美日本国产欧美日本韩国99 | 成人久久久 | 国产成人欧美一区二区三区一色天 | 国产一区二区三区在线 | 中文字幕日韩欧美 | 国产精品视频一区二区三区, | 最新黄色网址在线播放 | 欧美在线视频一区二区 | 亚洲视频在线一区二区 | 国产精品久久久久久久久免费高清 | 亚洲毛片网站 | 日韩一区二区三区在线观看 | 亚洲欧美日韩在线 | 国产精品成人一区二区三区 | 自拍偷拍精品 | 激情视频区 | 中文字幕视频在线 | 国产成人精品久久二区二区91 | 亚洲91在线| 99久热精品 | 色性网 | 欧美大片高清免费观看 | 久久久久蜜桃 | 欧美在线a| 国产日韩在线播放 | 精一区二区 | 国产精品久久久久9999鸭 | av片在线播放 | 亚洲精品二区 | 一区二区欧美在线 | 999在线视频免费观看 | 久久aⅴ乱码一区二区三区 午夜在线播放 | 中文字幕国产视频 | 一区二区免费 |