第8章 编译预处理及重新定义数据类型.doc

第8章 编译预处理及重新定义数据类型.doc

ID:28814621

大小:35.00 KB

页数:13页

时间:2018-12-14

第8章 编译预处理及重新定义数据类型.doc_第1页
第8章 编译预处理及重新定义数据类型.doc_第2页
第8章 编译预处理及重新定义数据类型.doc_第3页
第8章 编译预处理及重新定义数据类型.doc_第4页
第8章 编译预处理及重新定义数据类型.doc_第5页
资源描述:

《第8章 编译预处理及重新定义数据类型.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第8章编译预处理及重新定义数据类型所谓编译预处理,是编译器在对C语言源程序进行正常编译之前,先对一些特殊的预处理命令作解释,产生一个新的源程序。编译预处理主要为程序调试、移植等提供便利,是一个非常实用的功能。8.1宏定义在源程序中,为了区分预处理命令和一般的C语句的不同,所有预处理命令行都以符号“#”开头,并且结尾不用分号。预处理命令可以出现在程序任何位置,但习惯上尽可能地写在源程序的开头,其作用范围从其出现的位置到文件尾。C语言提供的预处理命令主要有:宏定义、文件包含和条件编译。其中宏定义分为带参数的宏定义和不带参数的宏定义。8.1.1不带参数的宏定义

2、不带参数的宏定义的一般形式为:#define标识符字符串它的作用是在编译预处理时,将源程序中所有标识符替换成字符串。例如:#definePI3.14#defineuintunsignedint当需要修改元素时,只要直接修改宏定义即可,无需修改程序中所有出现元素个数的地方。所以宏定义,不仅提高了程序的可读性、便于调试,而且也方便了程序的移植。无参数的宏定义使用时,要注意以下几个问题:1.宏名一般用大写字母,以便于与变量名的区别。当然,用小写字母也不为错。2.在编译预处理中宏名与字符串进行替换时,不作语法检查,只是简单的字符替换,只有在编译时才对已经展开宏名

3、的源程序进行语法检查。3.宏名的有效范围是从定义位置到文件结束。如果需要终止宏定义的作用域,可以用#undef命令。例如:#undefPI则该语句之后的PI不再代表3.14,这样可以灵活控制宏定义的范围。4.宏定义时可以引用己经定义的宏名。例如:#defineR2.0#definePI3.14#defineALLPI*R5.对程序中用双引号扩起来的字符串内的字符,不进行宏的替换操作。8.1.2带参数的宏定义为了进一步扩大宏的应用范围,在定义宏时,还可以带参数。带参数的宏定义的一般形式为:#define标识符(参数表)字符串它的作用是在编译预处理时,将源程

4、序中所有标识符替换成字符串,并且将字符串中的参数用实际使用的参数替换。例如:#defineS(a,b)(a+b)/2则源程序中如果使用了S(3,4),在编译预处理时将替换为(3+4)/2。8.2在51MCUDEMO试验板上实现两数相加并输出结果,变量的数据类型用宏定义的缩写形式。8.2.1实现方法将无符号字符型数据类型“unsignedchar”宏定义为“uchar”,将无符号整型数据类型“unsignedint”宏定义为“uint”,便于程序中使用。在主函数中定义3个“uchar”型的变量a、b、sum,a和b分别赋给初值,然后求和并赋予sum。最后将

5、sum的值输出到数码管上显示。8.2.2源程序文件在D盘建立一个文件目录(CS8-1),然后建立CS8-1.uv2的工程项目,最后建立源程序文件(CS8-1.c)。输入下面的程序:#include//1#defineucharunsignedchar//2#defineuintunsignedint//3ucharcodeSEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//4//=====================5===========voiddelay(

6、uintk)//6{//7uinti,j;//8for(i=0;i

7、/26delay(1);//27P0=SEG7[sum%10];//28P2=0xfe;//29delay(1);//30}//31}//32编译通过后,51MCUDEMO试验板接通5V稳压电源,将生成的CS8-1.hex文件下载到试验板上的单片机89S51中,注意,标示“LEDMOD_DATA”及“LEDMOD_COM”的双排针应插上短路块。右边3个LED数码管显示“255”。通过宏定义,我们发现原来长长的“unsignedchar”、“unsignedint”现变成了“uchar”、“uint”,是不是更方便使用了。8.2.3程序分析解释序号1:包含

8、头文件REG51.H。序号2:数据类型“unsignedchar”用宏定义为简写

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。