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

首頁 > 編程 > C > 正文

基于C中含有if的宏定義詳解

2020-01-26 16:06:13
字體:
來源:轉載
供稿:網友
含有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) )
參考書籍: <<代碼閱讀方法與實踐>>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 国产精品久久久久久久久久东京 | 婷婷色中文网 | 国产精品视频播放 | 国产一级在线观看 | 日韩一区二区三区在线 | 一区二区三区精品视频 | 日韩三级黄| 日韩电影a | 波多野结衣一二三四区 | 中文字幕亚洲视频 | 伊人超碰| 日本一区二区在线播放 | 欧美在线一二三 | 欧美激情自拍偷拍 | 色播开心网 | 欧美性猛交一区二区三区精品 | 亚洲精品久久久久avwww潮水 | 欧美日本国产欧美日本韩国99 | 国产精品久久91 | 久久99国产精品久久99果冻传媒 | 草逼视频免费观看 | 最新国产精品 | 亚洲精品v | 欧美日韩国产中文字幕 | 福利片在线观看 | 逼逼网| 国产精品人成在线播放新网站 | 日本中文字幕一区二区 | 日韩精品在线免费观看 | h视频免费 | 国产精品久久久久久久久久 | 欧美黑人巨大久久久精品一区 | 国产小视频网站 | 91麻豆精品国产91久久久资源速度 | 韩日一区二区 | 成人精品一区二区 | 在线成人免费 | 麻豆资源 | 欧美 日韩 国产 一区 | 久久夜视频 | 色婷婷在线视频观看 |