- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3. 头文件卫士(Header File Safeguard) 我们可以用条件编译指令作为“头文件的卫士”,它可以保证嵌套包含的头文件中不会出现内部链接属性的名称(例如全局常量、类型定义、类定义等)被重复定义。 头文件卫士的作用 例如,在头文件date.h中出现: #ifndef DATE #define DATE calss Date { int year,month,day; …… } #endif 3. 头文件卫士(续) 该条件编译指令的意思是:如果程序中没有定义名称DATE,则定义之,并且进一步定义名为Date的类(日期类),否则(DATE已被定义,也表明类Date已被定义),跳过类Date的定义。 //date.h #ifndef DATE #define DATE calss Date { int year,month,day; …… } #endif 这样即使date.h被嵌套包含,也能保证Date类不会在一个程序文件中被定义二次。 DATE是预编译名(编译开关),预编译名不是类型名,它仅在编译期存在。虽然名称可以任意,但一般取为与预编译内容(分支)有关的名称,例如Date是类名,则预编译名就取为DATE。 4. 宏定义指令 宏定义指令(define)用来定义符号常量、预编译名、函数等。 宏定义指令的作用 定义符号常量 #define 标识符 常量字面值 例如: #define pi 3.14159 // pi不能进入程序的调试与运行 这种用法已逐渐被常量声明所代替: const pi=3.14159; 4. 宏定义指令(续) 定义预编译名 #define 标识符 #ifndef DATE #define DATE calss Date { int year,month,day; …… } #endif 4. 宏定义指令(续) 宏定义函数 例如:(例6-8) #define MAX(a,b) ((a)(b)?(a):(b)) int a=1,b=0; MAX(a++,b); 注意:宏定义函数并不是真正的函数。编译预处理只是在出现“函数名”的地方,插入“代入参数”后的代码。 #define MAX(a,b) ((a)(b)?(a):(b)) int a=1,b=0; (a++)(b)?(a++):(b);// 原本是MAX(a++,b); * * * * * * * * * * * * * * * * * * * * * * * * * * * 3. 头文件的内容(续3) 模板声明和定义 例如:templateclass T class A{…}; 名空间定义 例如:namespace N{…}; 预编译命令 例如:#include iostream 函数原型(函数声明) 全局(符号)常量数据声明 外部数据声明 类型定义 3. 头文件的内容(续4) 函数原型(函数声明) 全局(符号)常量数据声明 外部数据声明 类型定义 模板声明和定义 名空间定义 预编译命令 可以看出,头文件的内容就是源程序所需的外部资源一览表,只要头文件上有的(例如函数声明),就可以按语法格式去使用。 注意:头文件一定不能包括如下内容: 全局变量定义,如 int a; 函数定义,如 void f(){…}; 理由:如果含有全局变量定义、函数定义的头文件被其它源程序文件所包含,就会出现多处(次)定义。 6.3 全局数据(Global Data) 1. 什么叫全局数据 在所有函数之外声明的数据(包括变量和常量)称为全局数据。 全局数据存放在程序的全局数据区,其作用域是全局的,也即在整个程序运行期间有效,可以被程序中的每一个函数访问。 例如: int a; const int MAX=100; void f1(){…} void f2(){…} …. void main(){…} 例如:a和MAX可以被f1、f2、main等函数访问。 #include iostream.h int n; char ret=t; void f1(int ); void main() { int v1,v2;
您可能关注的文档
最近下载
- 社区工作者考试试题库300道附参考答案(精练).docx VIP
- 2025山西忻州市水务有限责任公司社会公开招聘工作人员29人笔试备考题库及答案解析.docx VIP
- NE200300高性能矢量变频器用户手册.pdf VIP
- 太原市第一外国语学校小语种考试真题及答案.pdf VIP
- 2023年EXCEL版研究生考试考研英语考试词汇表字母顺序+乱序版(方便筛选背诵).docx VIP
- 2025年西安市工业合作联社下属企业招聘(10人)笔试备考试题及答案解析.docx VIP
- 外研版(三起)(2024)三年级上册英语Unit 2 My school things单元测试卷(含答案).docx VIP
- 2024江西建设职业技术学院招聘笔试真题带答案详解.docx VIP
- YAESU八重洲FTM-500DR(APRS版)中文说明书.pdf
- 2024江西建设职业技术学院招聘笔试真题及1套完整答案详解.docx VIP
文档评论(0)