C语言程序设计课件:编译预处理.pptx

C语言程序设计课件:编译预处理.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

C语言程序设计;编译预处理;9.1宏定义 ;2.使用宏定义的优点

(1)可提高源程序的可维护性。

(2)可提高源程序的可移植性。

(3)减少源程序中重复书写字符串的工作量。

例9-1宏定义应用。

#includestdio.h

#definePR10

voidmain()

{inti=6;

printf(“i+PR=%d\n”,i+PR);

#undefPR

#definePR50

printf(“i+PR=%d\n”,i+PR);

};(1)宏名一般用大写字母表示,用来与变量区别。

(2)宏定义不是C语句,所以不能在行尾加分号。否则,宏展开时,会将分号作为字符串的一个字符,用于替换宏名。

(3)在宏展开时,预处理程序仅以按宏定义简单替换宏名,而不作任何检查。如果有错误,只能由编译程序在编译宏展开后的源程序时发现。

(4)宏定义命令#define出现在函数的外部,宏名的有效范围是:从定义命令之后,到本文件结束。通常,宏定义命令放在文件开头处。

(5)在进行宏定义时,可以引用已定义的宏名。

(6)对双引号括起来的字符串内的字符,即使与宏名同名,也不进行宏展开。应用宏可编写通用性强的程序;可减少书写错误。

;(7)宏名常用在以下两方面:

用一个有意义的名字去代替含义不清的一串数字,比如用PI代表圆周率,用PAGE_SIZE代表每页打印的行数等,如:

#definePI3.14159265358979

#definePAGE_SIZE66

这样在程序中使用PI和PAGE_SIZE比用3.14159265358979和66的含义明确多了,既简单又清楚,既便于修改又可避免出错。

用一个短的名字去代替较长的名字如:

#defineSTUstructstudent

STUstud1,stud2;

即等价于

structstudentstud1,stud2;

(8)程序设计中常见的错误是宏定义时在宏值的后面加分号如:

#definePI3.14159;

则对s=2*PI*r;会替换成s=2*3.14159;*r;这会产生编译错误。

;1.带参数宏的一般格式:#define宏名(参数表)替换串

2.带参数宏的调用和宏展开

调用格式:宏名(实参表);

宏展开:用宏调用提供的实参字符串,直接置换宏定义命令行中、相应形参字符串,非形参字符保持不变。

3.说明:

(1)定义有参宏时,宏名与左圆括号之间不能留有空格。??则,C编译系统将空格以后的所有字符均作为替代字符串,而将该宏视为无参宏。

(2)有参宏的展开,只是将实参作为字符串,简单地置换形参字符串,而不做任何语法检查。在定义有参宏时,在所有形参外和整个字符串外,均加一对圆括号。宏值中间的参数要用圆括号括起来。

;例9-3带参数宏的应用。;9.2文件包含命令;9.2文件包含命令;9.2文件包含命令;9.2文件包含命令;9.3条件编译;9.3条件编译;格式2:

#ifndef标识符

程序段1

#else

程序段2

#endif

#ifndef标识符

程序段1

#endif

标识符未经#define定义,执行程序段1;否则,执行程序段2。;(1)提高了C源程序的通用性。

(2)使调试程序等过程变得灵活。

(3)使用条件编译可以减少目标程序的长度

例输入一行字母字符,根据需要设置条件编译,使之能将字母全改为大写字母输出,或全改为小写字母输出。;C标准规定可以在C源程序中加入一些“预处理命令”,以改进程序环境,提高编程效率。对于预处理命令,必须在程序编译之前,先对这些特殊命令进行“预处理”。

C语言提供的预处理功能主要有以下三种:宏定义、文件包含、条件编译,分别用宏定义命令,文件包含命令,条件编译命令来实现。

为了与一般C语句相区别,这些命令以符号“#”开头。

文档评论(0)

ning2021 + 关注
实名认证
内容提供者

中医资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年05月10日上传了中医资格证

1亿VIP精品文档

相关文档