6.宏定义不是C语句,不必在行末加分号。由于是简单置换,如果加了分号则会连分号一起进行置换。如:
#define PI 3.1415926;
s=PI*r*r;
经过宏展开后,该语句为
s=3.1415926;*r*r;
显然会出现语法错误。
由上所述可以看出,宏定义是用宏名来代替宏体的,它只做简单的替换,而不做正确性检查,使用宏定义时要特别注意这一点。另外使用宏名来代替字符串,可以减少程序中重复书写字符串的工作量,减少书写错误的发生,同时也便于修改,真正达到一处修改处处修改的目的。
6.2.2 带参数的宏定义
带参数的宏定义不仅进行简单的字符串替换,还要进行参数替换,其格式如下:
[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]
