[英]macros and function within loop
#define SUM(x,y) ((x)+(y))
void print(){
for(int i=0;i<10;i++)
printf("sum=%d\n", SUM(i,i+1));
}
使用上面的宏SUM有什么好處? 我讀到,當內部有一個函數調用循環時,宏非常有用。
對於非常簡單的計算,調用函數可能比實際的計算本身具有更多的開銷。 在一個循環中,情況甚至更糟。
但是,您需要仔細定義函數替換宏,以便僅對其參數進行一次評估。 例如,如果您有這樣的宏
#define DOUBLE(i) ((i) + (i))
並且您這樣稱呼它DOUBLE(i++)
,它將被擴展為(i++)+(i++)
,這將導致C中的未定義行為。這就是為什么內聯函數只對它的參數進行一次評估的原因,勝於宏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.