c程序设计第8章编译预处理.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程序设计第8章编译预处理,ubuntu编译c程序,linux下编译c程序,linux如何编译c程序,c程序编译器,c程序编译过程,linux下gcc编译c程序,linux编译c程序,windows下编译c程序,c程序反编译

在进行宏定义时,可以使用已定义的宏名 。 对双引号括起来的字符串内的字符,即使与宏名同名,也不进行宏展开。 * * * 第7章 编译预处理 * 内容提要 所谓编译预处理是指,在对源程序进行编译之前,先对源程序中的编译预处理命令进行处理;然后再将处理的结果,和源程序一起进行编译,以得到目标代码。主要包括以下几个内容: 文件包含 宏定义 条件编译 * 7.1 引言 特点: C 编译系统在编译前对程序中的预编译命令所进行的“预 处理” 所有此类命令均以 “#” 开头 * 文件包含是指:一个源文件可将另一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。 格式:#include “包含文件名” 或 #include 包含文件名 两种格式的区别仅在于: 使用双引号:系统首先到当前目录下查找被包含文件,如果没找到,再到系统指定的“包含文件目录”去查找。 使用尖括号:直接到系统指定的“包含文件目录”去查找。一般地说,使用双引号比较保险。 7.2 预处理指令#include:文件包含 * 7.3 预处理指令#define:宏定义 在C语言中,“宏”分为不带参数的宏和带参数的宏两种。 * ? 不带参数的宏定义 #define 标识符 字符串 作用:用一个指定的标识符代表一个字符串。 ? 带参数的宏定义 #define 宏名(参数表) 字符串 作用:带参数的字符串替换。 7.3 预处理指令#define:宏定义 * 无参宏应用举例 #define M (a+b+c)/2 #include stdio.h void main() { int a,b,c,s; printf(input 3 number: ); scanf(%d %d %d,a,b,c); s=M; printf(s=%d\n,s); } 宏定义 ? 宏名一般用大写 ? 行尾不加“;” ?有效范围 : 定义之后到文件 结束。 编译时 标识符简单替换成字符串。 7.3.1 无参数宏 (a+b+c)/2; * 无参宏的副作用 #define M a+b+c #include stdio.h void main() { int a,b,c,s; printf(input 3 number: ); scanf(%d %d %d, a,b,c); s=M/2; printf(s=%d\n,s); } 运行时输入了:5 8 4 结果为: * 带参宏定义的一般格式 #define 宏名(参数表) 字符串 7.3.2 带参数宏 * #define PI 3.1415 #define S(r) PI*r*r void main( ) { float fArea, fRadius =3.6; fArea=S(fRadius); } 宏展开后 area=3.1415* fRadius * fRadius; 注意: 宏替换—简单替换 若宏调用为 S(a+b) area=PI*a+b*a+b S((a+b)) 将所有的宏参数都用括号围起来。 #define S(r) ((PI)*(r)*(r)) * 带参数的宏和带参数的函数之间的主要区别 占用编译时间 占用运行时间 占用时间 形参简单替换成实参 先求出实参表达式的值,然后带入形参 调用 带参数的宏 带参数的函数 * 作用:减少被编译语句,最终减少目标文件长度。 商业软件公司广泛应用条件编译来提供和维护某一程序的许多顾客版本。 形式主要有三种。 1)#if 表达式 程序段1 #else 程序段2 #endif 表达式值为真,编译程序段1; 否则,编译程序段2 7.4 条件编译 * 2)#ifdef 标识符 程序段1 #else 程序段2 #endif 当标识符已被定义, 对程序段1编译; 否则,对程序段2编译。 3)#ifndef 标识符 程序段1 #else 程序段2

文档评论(0)

badjka + 关注
文档贡献者

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

1亿VIP精品文档

相关文档