第五章2、多文件结构和编译预处理指令.ppt.Convertor.doc

第五章2、多文件结构和编译预处理指令.ppt.Convertor.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章2、多文件结构和编译预处理指令.ppt.Convertor

2.3、预处理指令 将程序编译过程分为预处理和正式编译两个步骤是C++的一大特点。在编译时,编译器中的预处理模块首先根据预处理命令对源程序进行适当加工,之后才正式进行编译。 预处理命令以符号“#”开头,且在一行只能书写一条预处理命令,结束时不能有“;”号。 C++中有三种主要的编译预处理命令:宏定义、文件包含和条件编译。 1)、宏定义 无参数定义通常用来定义符号常数,其格式为: 1 #define 宏名 替换序列 其中宏名是一个标识符。为了区别变量,习惯上无参宏名 名称只使用大写字母。例如: #define PI 3.14159 该宏定义命令为常数3.14259起了一个符号化的名字PI。这 样,在该宏定义命令之后的程序中,用PI表示3.14259。 在定义宏时还可以加上参数,构成了带参数宏: #define 宏名(参数表) 带有参数的替换序列 例如: #define max(a,b) ((a)(b)?(a):(b)) 带参数的宏有点像函数。如: x=max(x,10); 即如果变量x的值小于10,则x=10,否则x的值保持不变。实际 上,这个带参数宏的确切含义为,通知编译程序中的预处理模 块在对应用程序进行处理时遇到max()时要进行转换,在转换时 2 还要对参数进行代换处理。上述宏定义经过转换后变为: x=((x)(10)?(x):(10)); 在利用宏命令定义带参数宏时,要注意宏名与括号之间有 无空格均可,且所有的参数均应出现在右边的替换序列中。 带参数宏与函数是有明显区别的,函数有形参和实参。而 宏只是编译时简单的替换。 撤消宏定义: #define DEBUG 1//定义宏 #undef DEBUG //撤消宏 若程序中没有#undef DEBUG ,则宏起作用的范围至该程序 文件末尾。 2)、文件包含 编译预处理命令中的文件包含是指一个程序将另一个指定 文件的内容包含进来,即将另一个程序文件在编译时嵌入到本 文件中。文件包含操作的一般格式有以下两种: 3 #include文件名 按标准方式搜索,文件位于C++系统目录的include子目录下 #include文件名 首先在当前目录中搜索,若没有,再按标准方式索。 头文件一般包含以下几类内容(带#时不加分号,否则加分号): (1)对类型的声明,class A (2)函数声明,做引用性声明 (3)内置(内联)函数的定义(inline) (4)宏定义 (5)全局变量定义 4 (6)外部变量的声明.如:extern int a; (7)可以根据需要包含其它的头文件 3)、条件编译 条件编译是编译预处理命令的一种,用于对源 程序的内容进行选择性编译。有时需要根据特定的 条件对程序中的特定代码进行有选择的编译即为条 件编译。条件编译可以根据指定的条件得到不同的 编译结果,从而形成不同的可执行程序。 注意:预处理命令第一个非空的字符必须是#,在#之前 不能有其它非空字符。 格式1: #ifdef 标识符 程序段1 #else 程序段2 #endef 当标识符已用#define定义过,则对程序段1进行编译,否则对程序段2进行编译。 格式2: #ifundef 标识符 程序段1 #else 程序段2 #endef 6 表示:如果标识符没有用#define定义过,则对程序段1进行编译,否则编译程序段2。 格式3: #ifdef 表达式1 程序段1 #elseif表达式2 程序段2 ........... #endif 表示:如果表达式1为真,就编译程序段1,当表达式2为真时,编译程序段2,......... 例如:下面的程序说明了条件编译的使用 #includeiostream.h #define X 5 void main() { 7 #ifdef X cout定义了宏Xendl; #else cout没有定义宏 Xendl; #endif #if X1 coutX定义小于1endl; #elif X2 coutX定义小于2endl; #elif X3 coutX定义小于3endl; #else coutX定义大于等于3endl; #endif }

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档