宏定义使用说明
发表:2023-08-29 12:00:42 阅读:65

电子资讯宏定义使用说明

对于宏定义还要说明以下几点:

①宏定义不是C语句,不用加分号,如果误加分号,则在编译时连同分号一起置换。如以下

错误定义:

#define PI 3.1415;

假设下面语句“s=PI*r*r;",宏展开后,该语句变为:

s=3.1415;* r. r;

显然出现语法错误。

②宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,它是一种简单的替换;字符串中可以含任何字符、常数、表达式,预处理程序对它不作任何检查。

③当宏定义在一行中写不下,需要在下一行继续写时,应该在最后一个字符后紧跟着加一个反斜线“\”,新的一行应从第1列开始书写,不能插人空格。例如:

共define AYEAR 12Month,30day\

* 24hour * 60min                 //新起一行从第1列开始13写

④宏名习惯用大写字母表示,以区别于变过名.ICCAVR编译器对源程序中用引号括起来的字符申内的字符、标号和标一识符,即使与宏名相同,也不进行置换。

⑤使用宏定义可以减少程序中重复书写某些比较长字符串的工作量;自己定义容易记忆,而几不容易出错。当需要改变某一个常量时,只要改变# define命令行就可以了。

⑥可用宏定义表示数据类型,使书写方便。例如:

#define UINT unsigned int

在程序中可用UINT作变量说明:

DINT*p                  //声明一个uns匆ned char类型的指针p

UINT*y                  //声明两个unsigned char类型的变量x和y

应注意用宏定义表示数据类型和用typedef定义数据说明符的区别:宏定义只是简单的字符串代换,是在预处理完成的;而typedef是在编译时处理的,它不是作简单的代换,二十对类型说明符重新命名,被命名的标识符具有类型定义说明的功能。例如:

#define UCHARI unsigned char *

typedef (unsigned char *)UCHAR2;

下面用UCHAR1和UCHAR2说明变量时就可以看出它们的区别:“UCHAR1 x,y;”在宏代换后变成“unsigned char * x,y;",这表示x是指unsigned char类型的的指针变量,而b则是unsigned char类型变量.而“UCHAR2 x,y;”语句在编译后表示x,y都是指向整型的指针变量。因为PIN2是一个类型说明符。由这个例子可见,在使用宏定义时要分外小心,以免出错。

 

电子街推荐阅读

C语言宏定义

编译预处理概述

位域实例讲解

什么是位域