- 1、本文档共333页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
全套课件完整版课件ppt整套电子教案全书电子教案课件教程教学课件汇总汇集
9.1.2 带参数的宏定义 带参数的宏定义是指不仅用一个指定的标识符来代表一个字符串,而且还要参数的替换。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。 1、宏定义 【语法格式】#define 宏名(形参表) 字符串 例如:#define M(y) y*y+3*y 2、宏调用 【语法格式】宏名(实参表); 【功能】预处理程序将程序中出现的所有带实参的宏名展开成由实参组成的字符串。 例如: k=M(5); 在宏调用时,用实参5去代替形参y,经预处理宏展开后的语句为:k=5*5+3*5;。 {DATE \@ yyyy/M/d|2022/4/26} * 【说明】 (1)带参数宏定义中,宏名和形参表之间不能有空格出现。 (2)在带参数宏定义中,形式参数不分配内存单元,因此不必作类型定义。而宏调用中的实参有具体的值。要用它们去代换形参,因此必须作类型说明。 (3)在宏定义中的形参是标识符,而宏调用中的实参可以是表达式。 (4)如果宏的实参使用表达式,则在宏定义时,对应的形参应加圆括号。 例如: #define a(r) 3.14*(r)*(r) … s=a(3+1); … 上例中语句s=a(3+1);进行宏替换后为:s=3.14*(3+1)*(3+1);结果是计算半径为3+1的圆的半径。 【例9.2】带参数的宏定义应用示例。 #define s(a,b) a+b main() { int x,y,z; ?x=3; ?y=4; ? z=2*s(x,y); ?printf(%d,z); } 运行结果: 10 {DATE \@ yyyy/M/d|2022/4/26} * 9.2 “文件包含”处理 文件包含的一般形式为: 【语法格式】#include 文件名 或 #include 文件名 【功能】把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。 在前面本书已多次用此命令,即包含库函数的头文件。 例如: #include stdio.h ? /*标准输入输出文件*/#include math.h ??/*数学库函数文件*/ #include string.h /*字符串操作函数文件*/ {DATE \@ yyyy/M/d|2022/4/26} * 【说明】 (1)包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来。 例如: #include stdio.h 或 #include stdio.h #include math.h 或 #include math.h 以上写法都是允许的。 包含文件用双引号括住,系统是在本程序文件所在的磁盘和路径下寻找包含文件;若找不到,再按尖括号方式查找。 包含文件用尖括号括住,则到存放c库函数头文件所在的目录查找要包含的文件。为了减少包含文件出错,通常使用双引号方式。 (2)一个include命令只能指定一个被包含文件, 若有多个文件要包含,则需用多个include命令。 {DATE \@ yyyy/M/d|2022/4/26} * (3)包含文件可以将多个源程序清单合并成一个源程序清单。 例如:有3个源程序文件p1.c、p2.c、p3.c共同完成一项任务。 p1.C语言程序: f1() {…} p2.C语言程序: f2() {…} p3.C语言程序: main() {…} 以上3个程序不能单独编译,否则会发生编译错误,可将p3.C语言程序改成如下程序: #includep1.c #include p2.c main() {…} {DATE \@ yyyy/M/d|2022/4/26} * 9.3 条件编译 条件编译有4种。 (1)第1种形式 【语法格式】#ifdef 标识符 ??? ? 程序段1 #else 程序段2 #endif 【功能】如果标识符已被 #define命令定义过则对程序段1进行编译,否则对程序段2进行编译。 (2)第2种形式 【语法格式】#ifndef 标识符 程序段1 #else 程序段2 #endif 【功能】如果标识符
文档评论(0)