#define宏定义形式的函数导致的bug
生活随笔
收集整理的這篇文章主要介紹了
#define宏定义形式的函数导致的bug
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
定義了一個宏定義形式的"函數":
#define? SUM8(YY)\
{\
???? int Y = YY>>2;\
? ...\
}
然后使用的時候,傳入了一個同名的變量Y:
int? Y = Ywin[x];
SUM8(Y)
本意是想展開成int Y = Ywin[x]>>2;
但實際上#define只是把參數名(YY)替換,與函數形式不同,其實展開的結果變成了:
int Y = Ywin[x];
{
int Y = Y>>2;//僅僅把YY替換成參數Y
}
那么 int Y = Y>>2;這句是先定義局部變量Y,再等于自己右移兩位。
以后使用#define形式的"函數"必須格外小心。
?
轉載于:https://www.cnblogs.com/mlj318/p/6141248.html
總結
以上是生活随笔為你收集整理的#define宏定义形式的函数导致的bug的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想新财季营收1120亿:智能手机业务大
- 下一篇: S2SH CRUD 整合