首页 理论教育 不带参数的宏定义:来自《C51单片机高效入门》

不带参数的宏定义:来自《C51单片机高效入门》

时间:2023-11-17 理论教育 版权反馈
【摘要】:关于宏定义的说明:1)一般宏名用大写字母表示。3)宏定义是用宏名代替字符串,宏扩展时仅作简单替换,不检查语法。6)宏定义终止命令#undef结束先前定义的宏名。┆7)宏定义中可以引用已定义的宏名。

不带参数的宏定义:来自《C51单片机高效入门》

定义的一般形式为

其含义是出现标识符的地方均用字符串来替代。

如:#define PI 3.1415926

作用:用标识符(称为“宏名”)PI代替字符串“3.1415926”。

宏展开:用定义的字符串去替换标识符,然后再对替换处理后的源程序进行编译,这一过程称为宏展开。在预编译时,将源程序中出现的宏名PI替换为字符串“3.1415926”,这一替换过程称为“宏展开”。

#define:宏定义命令

#undef:终止宏定义命令

【例5-1】

注意:

1)宏定义必须以#define开头,行末不加分号;

2)#define命令一般出现在函数外部;

3)每一个#define只能定义一个宏,且只占一行;

4)宏定义中的宏体只是一串字符,没有值和类型的含义,编译系统只对程序中出现的宏名用定义中的宏体作简单替换,而不作语法检查,且不分配内存空间;(www.xing528.com)

5)宏体为空时,宏名被定义为字符常量0。关于宏定义的说明:

1)一般宏名用大写字母表示。(变量名一般用小写字母)。

2)使用宏可以提高程序的可读性和可移植性。如上述程序中,多处需要使用π值,用宏名既便于修改又意义明确。

3)宏定义是用宏名代替字符串,宏扩展时仅作简单替换,不检查语法。语法检查在编译时进行。

4)宏定义不是C语句,后面不能有分号。如果加入分号,则连分号一起替换。如:

结果,在编译时出现语法错误。

5)通常把#define命令放在一个文件的开头,使其在本文件全部有效。(#define定义的宏仅在本文件有效,在其他文件中无效,这与全局变量不同)。

6)宏定义终止命令#undef结束先前定义的宏名。

7)宏定义中可以引用已定义的宏名。

【例5-2】

8)对程序中用双引号括起来的字符串,即使与宏名相同,也不替换。例如上例的printf语句中,双引号括起来的L和S不被替换。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈