- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)有参的宏展开只是将实参作为字符串,简单地替换形参字符串,而不进行任何语法检查。在定义有参宏时,最好为所有形参和整个字符
串,均加一对圆括号,以保证任何情况下都把宏定义
您可能关注的文档
- 自考32表达式相当于结果不变为问怎么算出来.pdf
- 新图色价位尺码.pdf
- 届希望杯四级试题.pdf
- 参考lowe joo example casemba22示例案例.pdf
- 内容编程vccode学习库.pdf
- 日本血吸虫病的诊治.pdf
- 一例漏斗胸患儿护理查房.pdf
- 青少年心理自救的指南2024(附图).pdf
- 合并肥胖的2型糖尿病患者的心肾并发症管理2024.pdf
- 肺血栓栓塞症的诊治.pdf
- 超重肥胖肾病患者管理2024.pdf
- 检验科危急值与处理方法2024(全文).pdf
- 山西省晋中市榆次区2024届九年级上学期期中学业水平质量监测数学试卷(含解析).doc
- 河北省廊坊市第七中学2023-2024学年七年级上学期期中数学试卷(含解析).docx
- 江西省丰城中学2023-2024学年七年级上学期11月期中考试数学试卷(含解析).doc
- 山西省朔州市怀仁市2024届九年级上学期期中学情调研数学试卷(含解析).doc
- 安徽省宿州市萧县2024届九年级下学期中考一模数学试卷(含答案).docx
- 河南省信阳市息县2024届九年级下学期中考适应性测试(四)数学试卷(含解析).docx
- 山西省运城市万荣县2023届九年级上学期期中考试数学试卷(含解析).doc
- 黑龙江省大庆市肇源县(五四学制)2023-2024学年六年级上学期期中数学试卷(含解析).doc
文档评论(0)