定义的一般形式为:
#define 标识符 字符串
该宏定义的作用是出现标识符的地方均用字符串来替代。
如:#define PI 3.14
作用:用标识符(称为宏名)PI代替字符串“3.14”。
宏展开:用定义的字符串去替换标识符,然后再对替换处理后的源程序进行编译,这一过程称为宏展开。在预编译时,将源程序中出现的宏名PI替换为字符串“3.14”,这一替换过程称为宏展开。
#define:宏定义命令
#undef:终止宏定义命令
【例6.1】
#define PI 3.14
main()
{float l,s,r,v;
注意事项:
1)宏定义必须以#define开头,行末没有分号;
2)#define命令一般出现在函数外部;
3)每一个#define只能定义一个宏,且只占一行;
4)宏定义中的宏体只是一串字符,没有值和类型的含义,编译系统只对程序中出现的宏名用定义中的宏体作简单替换,而不作语法检查,且不分配内存空间;
5)宏体为空时,宏名被定义为字符常量0。(www.xing528.com)
宏定义的说明:
1)宏名一般用大写字母表示(变量名一般用小写字母)。
2)使用宏可以提高程序的可读性和可移植性。如上述程序中,多处需要使用π值,用宏名既便于修改又意义明确。
3)宏定义是用宏名代替字符串,宏扩展时仅作简单替换,不检查语法。语法检查在编译时进行。
4)宏定义不是C语句,后面不能有分号。如果加入分号,则连分号一起替换。
如:
#define PI 3.14;
area=P*r*r;
宏替换之后成为:
area=3.14;*r*r;
因此,在编译时会出现语法错误。
5)一般来说,通常把#define命令放在一个文件的开头,使其在本文件全部有效(注意,#define定义的宏仅在本文件有效,在其他文件中无效,这与全局变量不同)。
6)宏定义终止命令#undef结束先前定义的宏名。
7)宏定义中可以引用已定义的宏名。
【例6.2】
#define R 3.0
8)对程序中用双引号括起来的字符串,即使与宏名相同,也不替换。如上例的printf语句中,双引号括起来L和S不被替换。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。