定義了一個宏定義形式的"函數":
#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形式的"函數"必須格外小心。
?