高级语言程序设计一版自考课程代码九章编译预处理.pdfVIP

高级语言程序设计一版自考课程代码九章编译预处理.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第01讲

宏定义命令及文件包含命令

第一节

宏定义命令

第二节

文件包含命令

第三节

条件编译命令

第四节

课后练习

[

讲义编号NODE01:针对本讲义提问

]

01

宏定义命令

C语言包括两种宏定义命令,即无参宏定义命令和有参宏定义命令。通常,宏定义用于定义程序中的符号常量、类型别名、运算式代换和语

句代换等。

在程序中使用已经定义的宏名,称为“宏调用”;C程序编译之前将所有的宏名替换为对应的“一串字符”,这一过程称为“宏替换”。由于宏替换

是在编译之前完成的,所以宏定义命令属于C语言的编译预处理命令。

[

讲义编号NODE02:针对本讲义提问

]

无参宏定义

【格式】#define

宏名字符序列

【说明】

1)“宏名”是标识符的一种,命名规则与标识符相同,通常采用大写字母,以便与变量区分;“字符序列”可以是常量、表达式及各种符号

等。“宏名”和“字符序列”之间使用空格符分隔。

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

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

[

讲义编号NODE03:针对本讲义提问

]

4)对于双引号括起来的字符串内的字符,即使与宏名重名,也不进行宏展开。

5)宏定义命令#define出现在函数的外部,宏名的作用域是从宏定义开始到本文件结束。通常,宏定义命令放在文件的开头。如果要强制终

止宏名的作用域,可以使用#undef命令,灵活地控制宏定义的作用范围。

#undef命令的格式如下:#undef

标识符

其作用是将已定义的标识符变为未定义的(即取消对标识符的定义)。

6)宏定义时,可以已定义的宏名,宏展开是逐层替换的。

#define

PI

3.1415926

#define

R

3

#define

L

2*PI*R

……

printf(“L=%.2f”,L);

L=2*3.1415926*3=18.85

[

讲义编号NODE04:针对本讲义提问

]

使用宏定义的优点

1)提高源程序的可读性。定义无参宏时,如果“字符序列”是一个常量,则相应的“宏名”是一个符号常量。恰当地命名符号常量,能表达出所

代表常量的实际含义,从而增加源程序的可读性。

例如,#define

EOF

-1

/*文件尾*/

#define

NULL

0

/*空指针*/

#define

MIN

1

/*最小值*/

2)提高源程序的可修改性,修改宏定义中的“字符序列”可以起到一改全改的作用。

3)避免源程序中重复书写字符串。

[

讲义编号NODE05:针对本讲义提问

]

有参宏定义

【格式】#define

宏名(形参表)带参数的字符序列

有参宏定义的调用和宏展开格式如下:

宏名(实参表)

宏展开的过程是:若程序中有带实参的宏,则按照define指定的字符序列从左至右进行替换;若宏定义中包含形参,则用实参直换宏定

义命令行中相应的形参,其中实参可以是常量、变量或表达式;若宏定义的字符序列中的字符是非形参字符则替换时保留不变。

[

讲义编号NODE06:针对本讲义提问

]

【说明】

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

宏。

例如,设#defineS(a,b)a*b

若程序中出现mul=S(x,y);

则认为宏名是S,宏展开结果是mul=(a,b)a*b(x,y);

2)有参的宏展开只是将实参作为字符串,简单地替换形参字符串,而不进行任何语法检查。在定义有参宏时,最好为所有形参和整个字符

串,均加一对圆括号,以保证任何情况下都把宏定义

文档评论(0)

zhishifuwu + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档