C_C++程序设计教程(第二版)第9章编译预处理.pdfVIP

C_C++程序设计教程(第二版)第9章编译预处理.pdf

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 编译预处理 •编译预处理的含义 •宏定义和宏替换 •文件包含 •条件编译 9.1编译预处理 C语言提供的编译预处理命令主要有以下 三种:宏定义命令、文件包含命令和 条件编 译命令。为了与一般C语言语句相区别,预处 理命令必须以符号“#”开头,一个预处理命令 单独占一行,每行的末尾不得加“;”号,以区 别于C语句。 9.2宏定义和宏替换 在C语言源程序中允许用一个标识符来表 示一个字符串,称为“宏” 。被定义为宏的标识 符称为宏名。在编译预处理时,对程序中所有 出现的宏名,都用宏定义中的字符串去替换, 这称为“宏替换”或“宏展开” 。 9.2.1 符号常量的宏定义 用一个指定的标识符来代表一个字符串,其 定义的一般形式为: #define 标识符 字符串 这里,#define表示是宏定义命令。 例如: #define PI 3.1415 功能是定义一个符号常量(宏名)PI代替 字符串3.1415 。 例9.1宏定义的使用 #define NAME Welcome to use C. /* NAME 是宏名 */ main() { printf(NAME); } 程序运行结果: Welcome to use C. 使用宏定义的说明: (1) 宏名一般用大写字母表示,变量名通常用小写字 母表示,但并非是规定。 (2) 宏展开时将宏名替换为字符串,可以是常数,也 可以是表达式,预处理程序对它不作任何检查。 (3) 宏定义不是语句,在行末不必加分号,如加上分 号则连分号也一起替换。 4 )在宏定义和宏替换时,可以使用已经定义的宏名。 例9.3使用已定义的宏定义。 #define A 2 #define B 3 #define S (A+B )*2 /* A,B是已定义的宏名 */ main() { printf(The result is:%d\n,S); } 程序运行结果: The result is: 10 9.2.2 带参数的宏定义 C语言允许宏带有参数。带参数的宏定义一般 形式为: #define 宏名(参数表) 字符串 其中的字符串中含有参数表中所指定的参 数。带参数的宏调用的一般形式为: 宏名(实参表); 例9.5 从键盘上输入两个数据,比较大小 并输出较大的数,定义宏实现。 #define MAX(x,y) (xy)?x:y main() { int a,b,max; printf(Please Input a ,b: ); scanf(%d%d,a,b); max=MAX(a,b); printf(Max=%d\n,max); } 程序运行结果: Please Input a ,b: 10 20 Max=20 9.3文件包含 文件包含是指一个源文件可以将另外一个源 文件的全部内容包含进来。其命令的一般形式 如下所示: #include 文件名 或 #include 文件名 其中,文件名是被包含文件的文件名,它是 一个磁盘文件。 9.4 条件编译 预处理程序提供了条件编译的功能。可以按不同的条件 去编译不同的程序部分,因而产生不同的目标代码文 件。 条件编译命令有以下几种形式。 1.第1种形式 #ifdef 标识符 程序段1 #else 程序段2 #endif 9.4 条件编译 2. 第2种形式 #ifndef 标识符 程序段1 #else 程序段2 #endif 与第一种形式的区别是将“ifdef”改为“ifndef” 。 9.4 条件编译 3. 第3种形式 #if 常量表达式 程序段1 #else 程序段2 #endif 功能:如常量表达式的值为真(非0),则对程序段 1 进行编译,否则对程序段2进行编译。其中的 else部分可以省略。 例9.12

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档