




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章程序文件和预处理指令 C 程序是从main函数开始运行 其间可能调用若干函数 这些函数又调用了另外的函数 函数的层层调用构成了C 程序的结构 然而 当多个人合作开发时 就会涉及到程序文件的组合 在VisualC 2008中 一个解决方案可以容纳多个程序文件 这些程序文件共同构成了一个完整的程序 本章将介绍多个程序文件之间如何交互 以及如何管理和控制程序文件的内容 头文件的使用外部名称命名空间预处理指令 1 7 1使用头文件 C 程序一般由多个文件组成 C 程序包含两大类文件 头文件这种文件一般用文件扩展名 h来标识 这些文件包含类型定义和其他用于程序中一个或多个源文件的代码 源文件其扩展名为 cpp 也可以是 c 这种文件包含要编译成机器指令的代码 如函数的字义 需要的头文件通过预编译指令 include添加到源文件中 头文件和源文件之间的主要区别是它们的使用方式不同 根据约定 在头文件可以包含下面的内容 类型声明函数声明常量定义数据声明预处理指令注释但头文件不宜包含 函数定义数据定义每个源文件必须包含它需要的头文件 在编译程序时 只编译源文件 根据 include指令将添加程序需要的头文件内容 编译的每个源文件都会生成一个对象文件 它是一个扩展名为 obj的二进制输出文件 obj文件由链接程序组合成一个可执行的程序 2 7 2外部名称 关键字extern可以置于变量或者函数前 以标识变量或者函数的定义在别的文件中 提示编译器遇到此变量和函数时在其他文件中寻找其定义 如果声明的外部变量一次也没定义 或者外部变量多次定义 或者类型不同 都会造成直接或间接的错误 这一点需要读者注意 3 7 3命名空间 在ANSIC 标准库中使用的所有名称都是在std命名空间中定义的 这意味着 在这个标准库中使用的所有名称都有一个附加的限定名std 例如 cout其实是std cout 对于一个大型的程序 除了用函数去堆积程序外 还需要程序员之间互相协调 对于不在同一台计算机上的多个程序员 在开发过程中名称的冲突 共享名称的使用都是需要解决的问题 这样我们就需要定义自己的命名空间 4 7 3 1声明命名空间 在没有定义命名空间时 就默认使用全局命名空间 全局命名空间中的所有名称就声明时的名称 没有附加命名空间名称 对于小型的程序 可以在全局命名空间中定义名称 这不会遇到任何问题 对于较大的应用程序 出现命名冲突的机会大大增加 此时就应该使用命名空间 使用关键字namespace可以声明一个命名空间 5 7 3 2未指定名称的命名空间 在声明命名空间时 如果未指定名称 但这并味着命名空间就没有名称 下面的代码声明一个未指定名称的命名空间 namespace 名称声明 这个语句创建一个命名空间 它有一个由编译器生成的内部名称 在一个文件中只能有一个未指定名称的命令空间 如果声明其他未指定名称的命名空间时 则会认它们位于同一个命名空间中 6 7 4预处理指令 预处理指令本身不是C 语言的组成部分 不能直接对它们进行编译 它们是在C 程序代码被编译为机器指令之前执行 预处理指令的作用是根据包含的源文件中的指令 使源代码正确进行编译阶段 所有的预处理指令都是以符号 开头 以便与C 语句区分开 最常见的预处理指令包括 文件包含 条件编译 宏定义 error和 pragma指令 7 7 4 1文件包含 include指令提示预编译将包含的头文件内容附加到源文件中 以参加编译 例如 include这个语句将iostream的内容提取到程序中 如果头文件是C 系统提供的 则用尖括号把文件括起来 如果是自定义的头文件 则文件名要放在双引号中 例如 include myHead h 两者之间的差别主要是在编译器的路径搜索顺序上 在安装C 编译器时 已经将C 系统资源的默认路径设置好了 对于用了尖括号的头文件 编译器直接就到这个默认的路径上搜索其头文件 8 7 4 2宏定义 在C语言中 宏定义 define常用于定义符号常量 函数功能 重新命名 字符串的拼接等 但在C 中宏定义 define主要用于条件编译指令中 因此我们还需要对宏定义 define有所了解 最简单的宏定义是指定一系列字符 以代替程序文件中的特定符号 9 7 4 3条件编译 在程序中我们可以通过条件判断语句决定执行某部分代码 或者根据条件执行不同的代码 在预处理器中提也提供了类似的功能 条件编译 通过条件编译可注释掉一些指定的代码 以达到版本控制 防止对文件重复包含的功能 条件编译指令 if的使用方式有两种 第一种是测试某个标识符以前是否使用 define宏定义过 第二种方式是测试某个常量表达式是否为真 10 7 4 4 error和 pragma指令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年重庆市綦江区万东镇公益性岗位招聘真题
- 2025年中国育苗床行业市场调查、投资前景及策略咨询报告
- 2025年中国紫外线光管行业投资前景及策略咨询研究报告
- 2025年中国磷铜行业市场调查、投资前景及策略咨询报告
- 2025年中国白铜上下拉自动头拉链行业市场调查、投资前景及策略咨询报告
- 2025年中国涤纶(特多龙)运动袋行业市场调查、投资前景及策略咨询报告
- 2025年中国棉布刺绣花边行业市场调查、投资前景及策略咨询报告
- 2025年中国智能回路调节器行业投资前景及策略咨询研究报告
- 公司车辆电动车管理制度
- 春节期间祭祖管理制度
- 2025年陕西、山西、青海、宁夏高考物理试卷真题(含答案解析)
- 2025年全国统一高考数学试卷(全国一卷)含答案
- 2025-2030中国过程自动化系统行业市场发展趋势与前景展望战略分析研究报告
- 北京市西城区三年级下学期数学期末试卷(含答案)
- 体育聘用合同协议书模板
- 2024年江西省中考生物·地理合卷试卷真题(含答案)
- 车间安全环保培训知识
- 真空系统设计培训课件
- (高清版)《城镇供水管网漏水探测技术规程 CJJ159-2011》
- 工区施工监测监测点保护管理办法
- 泊船瓜洲集体备课
评论
0/150
提交评论