- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 本章要点 了解带参的宏定义和不带参的宏定义 了解文件包含及使用方法 自学条件编译在程序设计中的使用 第6章 编译预处理 主要内容 概述 宏定义 文件包含 条件编译(自学) 编译预处理 编译预处理:编译器在对源程序正式编译之前,对源程序进行的文字上的处理工作。 预处理1 预处理2 编译 f.cpp f .cpp f .cpp 内容 变化 内容 变化 连接 f.obj f.exe “预处理”命令行 以“#”开头 末尾不加“;” 可以放在程序的任何位置 编译预处理 三种预处理 宏定义 文件包含 条件编译(自学) 不带参数的宏定义 #define PI 3.1415926 标识符 字符串 不带参数的宏定义例 #include iostream.h//li0601.cpp 不带参数的宏定义 #define PI 3.1415926 void main( ) { double l,s,r,v; coutinput radius :; cinr; l=2.0*PI*r; s=PI*r*r; v=4.0/3*PI*r*r*r; cout周长为:l\n面积为:s\n体积为:v\n; } l=2.0*3.1415926*r; s= 3.1415926 *r*r; v=4.0/3* 3.1415926 *r*r*r; 宏代换后 说明 一般用大写字母表示宏名 减少程序中的重复书写,提高通用性 如:#define array_size 100 int array[array_size]; 便于修改 只作简单置换,不作任何计算,不作语法检查 不是C++语句,不在行末加“;” 有效范围:定义命令之后到本源文件结束 #undef终止宏定义的作用域 例: #define PI 3.1415926 main( ) {… } #undef PI f1( ) ... PI的有效范围 双引号中的字符,与宏名相同也不置换 说明 宏定义时,可引用已定义的宏名 #include iostream.h//li0602.cpp #define R 5.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R*R void main( ) { coutL=L\nS=Sendl; } 不置换 带参数的宏定义 格式:#define 宏名(参数表) 字符串 例 #define s(a,b) a*b … area=s(2,3); 带参数的宏定义例 #include iostream.h//bc0601.cpp #define PI 3.1415926 #define S(r) PI*r*r void main( ) { float a,area; a=3.6; area=S(a); coutr=a\narea=areaendl; } 如:area=s(a+b); 则area=PI*a+b*a+b显然与原意不符 如何改? #define s(r) PI*(r)*(r) 注意: 宏定义时,宏名与带 参数的括号间不应加空格 #define s(r) PI*r*r 此例将s定义为(r) PI*r*r 注意 ①可以嵌套定义宏 例: #define MAX2(a,b) ( (a)(b)?(a):(b) ) #define MAX4(a,b,c,d) MAX2( MAX2(a,b),MAX2(c,d) )√ ②不允许递归定义 例: #define fac(n) n=1 ? 1 : n*fac(n-1) × 文件包含 作用:让编译预处理器把另一个源文件嵌入(包含)到当前源文件中的该指令处。 #include file2.h A B file1.cpp file2.h A B file1.cpp 包含处理 一般形式 文件包含命令格式如下: ① #include 文件名 或 ② #include 文件名 区别:设用户源程序在文件夹 D:\VC 中, 系统规定的标准头文件在下述文件夹中(标准包含路径) C:\Program Files\Microsoft Visual Studio\VC98\Include 则:对 ① 编译器先在 D:\VC 文件夹中查找要包含的头文件 , 若找不到,再到标准包含路径下查找该文件 , 找到后,将该头文件插入到用户源文件头部。 对 ② 编译器直
文档评论(0)