[].+编译预处理.pptVIP

  1. 1、本文档共15页,可阅读全部内容。
  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文档。上传文档
查看更多
[].+编译预处理.ppt

3.10 编译预处理 指示系统在编译之前就要执行的语句 ,执行后再进行编译,因此称为预处理语句。 这类语句以“#”打头,“#”前不能留空格,语句尾不用分号“;”作结束符,每个语句占一行。 用预处理语句编写的程序,称为预处理程序。 3.10.1 宏定义(宏替换)# define 宏定义是预处理中最常用的一种方法。宏定义又分为: 简单宏定义(字符串替换); 格式为: #define 宏名 宏体 带参数宏定义; 格式为: #define 宏名(参数表) 宏体 简单宏定义 “#”是预处理语句的标志,define是宏定义的关键字。宏名是一标识符,宏名与宏体均为字符串。预处理时将把程序中出现的所有宏名一律用宏体替换。C/C++语言中,符号常量的定义就是用这种方法。: 说明: 宏定义可以嵌套引用,即前面定义的,后面可以引用和再次定义。 #define WIDTH 256 #define LENGTH (WIDTH+20) 说明: 宏体不仅可以是字符串常量,也可以是表达式或语句组成的字符串,或多条语句。 说明: 可以用#undef宏命令终止宏定义的作用域。 带参数的宏定义 #define 宏名(参数表) 宏体 宏名是一个标识符,与后面的参数表之间不得有空格,参数表中若存在多个参数,则必须用逗号分隔。这种替换也是一种字符串替换. c = a+b*a+b; c = (a+b)*(a+b); 说明: 带参数的宏定义中,双引号内字符串在宏调用时不被替换。 #includeiostream.h #define PRINT(v) coutv=vendl; void main() { int a, b; a=1; b=2; PRINT(a); PRINT(b); } 要实现此目的,可以改为: 要实现此目的,可以改为: #define PRINT(ch,v) coutch“=“vendl; 调用时写为: PRINT(‘a’, a); PRINT(‘b’, b) 例:用宏定义编写一个程序,将输入字符中的小写字母变成大写字母。 #includeiostream.h #define IS_LOWER(x) (((x)=a) ((x)=z)) #define TO_UPPER(x) (IS_LOWER(x) ? (x)-a+A : (x)) void main() { char c; while((c=cin.get()) != EOF) { c = TO_UPPER(c); coutc; } } 3.10.2 文件包含指令 文件包容是指一个程序文件将另一个指定文件的内容包含进来,它有两种格式: 格式1: #include文件名 尖括号内的文件名是指系统规定的放在标准目录中的*.h文件名。因此,预处理程序只按系统规定的标准方式检索文件目录。 格式2: #include”文件名” 双引号中可以包含文件的完整路径。因此,预处理程序首先在原来的路径中检索文件,如果没有找到,则按系统规定的标准方式检索文件。 一般情况下,编译系统对源程序中的所有语句都进行编译,但有时希望只对源程序中的一部分内容,当满足某些条件时才进行编译,这就是条件编译。 条件编译命令有下列三种形式: #if表达式 语句块1 #else 语句块2 #endif 当指定表达式为TRUE时,就编译语句块1,否则编译语句块2 条件编译命令的形式: #ifdef 标识符 语句块1 #else 语句块2 #endif 当标识符已定义,则编译语句块1,否则编译语句块2 例如,说明下面这一段条件编译的作用: #ifndef __cplusplus #error Must use C++ for the type iostream. #endif ? #ifndef __IOSTREAM_H #define __IOSTREAM_H ? #if !defined( __MEM_H ) #include mem.h // to get memcpy and NULL #endif * * 预处理语句主要有三类: 宏定义 ; 文件包含; 条件编译; 例如: #define E 2.71828 #define TRUE 1 #define EOF -1 Var = LENGTH*20; 编译预处理时被替换为: Var = (256+20)*20; 运行时结果为5520,赋给变量Var。 #define PI 3.14159 #define R 2.0 #define CIRCUM return(

文档评论(0)

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

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

1亿VIP精品文档

相关文档