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

首頁 > 編程 > C > 正文

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

2020-01-26 16:06:13
字體:
供稿:網(wǎng)友
含有if的宏定義
當(dāng)宏定義中含有 if 時(shí)
1) 定義如下宏
#define DC(p) if( foo(p) )fun(p)
用在下面的環(huán)境中
if(k>n)
DC(k);
else
DC(n);
宏替換后,如下
if(k>n)
if( foo(k) )
fun(k);
else
if( foo(n) )
fun( n );
可見, 原來的 if 和 else 不再配對(duì).
2) 為了避免這類問題, 我們可以將包含if語句的宏定義為一個(gè)整體.
#define DC(p) {if( foo(p) ) fun(p);}
但是, 替換后變?yōu)?BR>if(k>n)
{
if( foo(k) )
fun(k);
};else ...
由于else前面多了個(gè)分號(hào), 編譯時(shí)會(huì)提示錯(cuò)誤沒有與else配對(duì)的if.
3)因?yàn)檫@些原因, 在宏定義中, 經(jīng)常會(huì)將語句序列放入 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
...
程序可以正常運(yùn)行
4)替換方案
a)采用 ? : 表達(dá)式
#define DC(p) ( (foo(p)) ? (fun(p)):0)
b)利用布爾運(yùn)算的短路徑求值屬性
#define DC(p) ( (foo(p)) && (fun(p), 1) )
參考書籍: <<代碼閱讀方法與實(shí)踐>>
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 蜜桃麻豆视频 | 羞羞视频入口 | 一本色道精品久久一区二区三区 | av电影在线网 | 羞羞答答视频 | 麻豆国产网站 | av免费av | 国产在线欧美日韩 | 午夜热门福利 | 在线免费av网站 | 成人黄色小视频网站 | xxxxhd73国产| 精品久久999 | 娇喘视频在线观看 | 国产在线a | 久久撸视频 | 国产免费专区 | h视频免费在线 | 午夜视频在线观看免费视频 | 做羞羞视频 | 午夜a狂野欧美一区二区 | 国产69精品久久久久久野外 | 激情亚洲一区二区 | 精品999www| 嗯~啊~弄嗯~啊h高潮视频 | 欧美精品久久久久久久久久 | 国产成人高清在线 | 久久成人午夜视频 | 国产精品久久久久影院老司 | 999久久久久久 | 欧美一级免费看 | 国产精品久久久久久久久久久久久久久久 | 亚洲午夜精品视频 | 亚洲一区 国产 | 久久777国产线看观看精品 | 国产精品亚洲精品久久 | 欧美乱论| 中文字幕在线观看视频www | 久久亚洲精品11p | a一级黄色大片 | 免费a观看|