- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
尚辅网 尚辅网 尚辅网 6.9 编译预处理 —6.9.2 宏定义 (5)带参的宏和带参函数很相似,但有本质上的不同,除上面已谈到的各点外,把同一表达式用函数处理与用宏处理两者的结果有可能是不同的。 【例6.19】用带参数的函数求某个数的平方 /* 源文件名:Li6_19.c 功能:利用带参数的函数求平方 */ #include ”stdio.h” void main() { int i=1; while(i=5) printf(%d\n,test(i++)); } test(int y) { return((y)*(y)); } 尚辅网 6.9 编译预处理 —6.9.2 宏定义 编译、连接、运行程序。程序运行后,屏幕显示: 尚辅网 6.9 编译预处理 —6.9.2 宏定义 【例6.20】带参数的宏求平方 /* 源文件名:Li6_20.c 功能:利用带参数的宏求平方 */ #include ” stdio.h” #define TEST(y) ((y)*(y)) void main() { int i=1; while(i=5) printf(%d\n,TEST(i++)); } 尚辅网 6.9 编译预处理 —6.9.2 宏定义 编译、连接、运行程序。程序运行后,屏幕显示: 在例6.19中函数名为test,形参为Y,函数体表达式为((y)*(y))。在例6.20中宏名为TEST,形参也为y,字符串表达式为(y)*(y))。例6.19的函数调用为test(i++),例6.20的宏调用为TEST(i++),实参也是相同的。从输出结果来看,却大不相同。 尚辅网 6.9 编译预处理 —6.9.2 宏定义 分析如下:在例6.19中,函数调用是把实参i值传给形参y后自增1。然后输出函数值。因而要循环5次。输出1~5的平方值。而在例6.20中宏调用时,只作替换,TEST(i++)被替换为((i++)*(i++))。从以上分析可以看出函数调用和宏调用二者在形式上相似,在本质上是完全不同的。 尚辅网 6.9 编译预处理 条件编译是指按照不同的条件去编译程序不同的部分,从而生成不同的目标代码,以实现程序的不同功能。条件编译可构造多种条件下运行的程序,提高程序的通用性和可移植性,便于程序的调式与纠错。大型C程序,经常使用条件编译。 与条件编译相关的预处理指令有:#if、#else、#ifdef、#ifndef、#elif和#endif 6.9.3 条件编译 尚辅网 6.9 编译预处理 —6.9.3 条件编译 条件编译指令的使用形式为: 1.# if的使用方法 (1)# if 常量表达式 程序段1 #else /*此部分可以没有*/ 程序段2 #endif 功能:如果常量表达式为真,编译程序段1,否则编译程序段2 尚辅网 6.9 编译预处理 —6.9.3 条件编译 (2)# if 常量表达式1 程序段1 # elif常量表达式 2 /*可有多个#elif */ 程序段2 #else 程序段3 #endif 功能:常量表达式1为真,编译程序段1;若常量表达式1为假,而常量表达式2为真,编译程序段2;其它,编译程序段3。 尚辅网 6.9 编译预处理 —6.9.3 条件编译 2.# ifdef的使用方法 形式:# ifdef 宏名 程序段1 #else /*此部分可以没有*/ 程序段2 #endif 功能:如果宏名(标识符)已被定义过,则编译程序段1,否则编译程序段2. 尚辅网 6.9 编译预处理 —6.9.3 条件编译 3.# ifndef的使用方法。 形式:# ifndef 宏名 程序段1
您可能关注的文档
- C语言程序设计(第二版)电子教案王伟 第7章.ppt
- C语言程序设计(第二版)电子教案王伟 第8章.ppt
- C语言程序设计(第二版)电子教案王伟 第9章.ppt
- C语言程序设计(第二版)电子教案王伟 第10章.ppt
- C语言程序设计(第二版)电子教案张昕 第1章 C语言绪论.ppt
- C语言程序设计(第二版)电子教案张昕 第2章 数据类型及表达式.ppt
- C语言程序设计(第二版)电子教案张昕 第3章 结构化程序设计.ppt
- C语言程序设计(第二版)电子教案张昕 第4章 数组.ppt
- C语言程序设计(第二版)电子教案张昕 第5章 函数与预处理.ppt
- C语言程序设计(第二版)电子教案张昕 第6章 指针和引用.ppt
- C语言程序设计案例教程 高职计算机大类专业 熊锡义 第7章 指针.ppt
- C语言程序设计案例教程 高职计算机大类专业 熊锡义 第8章 结构体共用体和枚举类型.ppt
- C语言程序设计案例教程 高职计算机大类专业 熊锡义 第9章 位运算.ppt
- C语言程序设计案例教程 高职计算机大类专业 熊锡义 第10章 文件.ppt
- C语言程序设计案例教程 高职计算机大类专业 熊锡义 第11章 C语言课程设计.ppt
- C语言程序设计案例教程 教学课件 作者 廖湖声 叶乃文 周珺 第5章_程序的组织结构.ppt
- C语言程序设计案例教程 教学课件 作者 沈大林 等 第0章.ppt
- C语言程序设计案例教程 教学课件 作者 沈大林 等 第1章.ppt
- C语言程序设计案例教程 教学课件 作者 沈大林 等 第2章.ppt
- C语言程序设计案例教程 教学课件 作者 沈大林 等 第3章.ppt
文档评论(0)