[理学]C语言第09章.pptVIP

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

第九章 本章要点 预处理的概念 C语言处理系统的预处理功能 预处理命令的使用 主要内容 9.1 宏定义 9.2“文件包含”处理 9.3 条件编译 概述 §9.1 宏定义 §9.1.1 无参宏定义 案例AL9_1.c 无参宏的使用 案例AL9_1.c 说明 3.说明 案例AL9_2.c在宏定义中引用已定义的宏名 案例AL9_2.c说明 案例AL9_3.c 对“输出格式”作宏定义 符号常量 §9.1.2 无参宏定义 案例AL9_4.c 说明: 有参数的宏和有参函数的区别: 案例AL9_5.c通过宏展开得到若干个结果 案例AL9_6.c与 AL9_7.c 有参的宏和有参函数的不同 分析如下: §9.2 “文件包含”处理 §9.3 条件编译 案例AL9_8.c 程序在不同条件下,完成不同的功能 案例AL9_9.c输入一行字母字符,根据需要设置条件编译,使之能将字母全改为大写输出,或全改为小写字母输出。 本章小结 作业:P219 9.1、 9.10 写出宏展开后的情况及输出结果 #define MAX(a,b) ab?a:b void main() { int a=1,b=2,d=3,c=4; printf(5+max=%d\n,5+MAX(a+b,c+d)); } 4.说明 (1)编译预处理时,预处理程序将查找指定的被包含文件,并将其复制到#include命令出现的位置上。 (2)一条包含命令,只能指定一个被包含文件。如果要包含n个文件,则要用n条包含命令。 (3)文件包含可以嵌套,即被包含文件中又包含另一个文件。 (4)被包含文件与其所在文件在预编译后成为同一文件。 例如:如果文件1包含文件2,而在文件2中要用到文件3的内容,则可在文件1中用两个include命令分别包含文件2和文件3,而且文件3应出现在文件2之前,即在file1.c中定义。 预处理程序提供了条件编译的功能。可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。 所谓“条件编译”,是对部分内容指定编译的条件,使其只在满足一定条件才进行编译。 条件编译有三种形式,下面分别介绍: 1.第一种形式: #ifdef 标识符 程序段1; [#else 程序段2;] #endif 功能:如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else可以没有,即可以写为: #ifdef 标识符 程序段 #endif (1)在不同的系统中,一个int 型数据占用的内存字节数可能是不同的。 例如: /*#define COMPUTER_A */ #ifdef COMPUTER_A #define INTEGER_SIZE 16 #else #define INTEGER_SIZE 32 #endif (2)利用条件编译,还可使同一源程序即适合于调试(进行程序跟踪、打印较多的状态或错误信息),又适合高效执行要求。 例如: /*#define DEBUG */ #ifdef DEBUG printf(“x=%d,y=%d”,x,y); #endif 这样在调试时只需在前面加上DEBUG的定义即可。调试完毕再将DEBUG的定义去掉。 2. 第二种形式: #ifndef 标识符 程序段1 [#else 程序段2] #endif 与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。这与第一种形式的功能正相反。 3. 第三种形式: #if 常量表达式 程序段1 [#else 程序段2] #endif 它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能。 #define R 1 void main() { float c,r,s; printf (input a number: ); scanf(%f,c); #ifdef R r=3.14159*c*c; printf(area of round is: %f\n,r); #else s=c*c; printf(area of square is: %f\n,s);

文档评论(0)

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

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

1亿VIP精品文档

相关文档