#define S(a,b) (a)*(b)
无论是Area=S(2,5);还是Area=S(w,w+5);都将得到希望的值。
由此可以看出宏体中适当加圆括号所起的作用。
3.带参的宏传递参数与函数调用实参与形参的传递也是有区别的,函数调用时,先求实参表达式的值,然后传递给形参。而使用带参的宏只是进行简单的字符替换。例如上面的例子就是如此。
4.函数的形参与实参要求类型匹配,并进行类型检查。带参的宏不存在类型问题,宏名无类型,它的参数没有类型也不进行类型检查。
例6.2 带参宏定义的应用
1 #include <stdio.h>
2 #define MIN(a,b) ((a)<(b)?(a):(b))
上一页 [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] 下一页
|