这时将(a,b) ((a)<(b)?(a):(b))作为宏名MIN的宏体字符串了。
2.由于优先级的不同,定义带参数的宏时,宏体中与参数名相同的字符序列带圆括号与不带圆括号意义有可能不一样。
例如:
#define S(a,b) a*b
Area=S(2,5);
宏展开后为:Area=2*5;
如果Area=S(w,w+5);
宏展开后Area=w*w+5;由于乘法的优先级高于加法的优先级,显然得不到希望的值。
如果将宏定义改为:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] 下一页