版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大规模C+软件结构,郭东伟 ,工程结构,解决方案sln 工程project make文件 源文件 头文件 其他资源文件,大规模C+工程结构,编译依赖,一个编译对象依赖于其他对象 如果被依赖对象发生修改,则依赖对象应该重新编译 .exe - .o -.cpp -.h 解耦,多个源文件,正确的头文件引用次序 正确的变量声明与定义次序 不能重复定义 全局变量初始化,声明(Declare)与定义(Define),名字(类型、变量、常量、函数等)在使用前必须先声明或定义。 声明:引入名称,使得名称可见 定义:引入实体,可以完整地使用 可以多次(完全)重复声明,
2、但只能定义一次。 定义意味着声明,但声明不一定是定义 在编译阶段需要看到声明,在链接阶段需要看到定义。,一个声明是一个定义,除非,它声明了一个没有详细说明函数体的函数 它包含一个extern定义符且没有初始化 它是一个包含在一个类定义之内的静态类数据成员的声明(它必须在最终程序的某处准确的定义一次) 它(仅仅)是一个类名声明 它是一个typedef声明,声明的结构,描述符 基础类型 待声明名字 初始定义 描述符 extern, static, mutable, vilatile, virtual auto, register 声明运算符 * 指针;const 常量; different typ
3、es(CE) 检查该名字的链接类型,内部链接名字的可能错误,内部链接的名字,必须在本编译单元结束之前找到唯一的定义。 used but not defined (CE) 定义指针,不看做是使用,可以只有声明,外部链接名字的可能错误,在本编译单元,可以没有该名字的定义 在链接过程,在所有目标文件中查找该名字的定义点 必须有且只有一个定义点 Undefined Reference Multiple Definition 同一名字,所有声明点必须类型等价,头文件,可能被多个cpp所包含,因此放置带有外部连接的定义肯定是个错误 放置内部连接的定义不会有错误,但通常会有不良的后果 重复的函数定义 使用s
4、tatic 来定义全局变量 const char* cc=“abc”; 头文件中的定义,会污染全局空间,适合放入头文件,类的定义,包括 类成员变量定义 类成员函数声明 类内静态常量(static const)声明 类内静态成员变量的声明 类的内联函数定义 非类成员函数声明 外部连接的变量声明(决不能是定义) 枚举定义 名字声明,非定义,如class,可以但不建议放入头文件,常量定义? 静态变量声明 静态函数定义(特定情况下有用),不能放入头文件,非static变量定义 带有extern的变量定义 静态成员变量定义 类的静态成员变量定义(带有初始值) 函数定义,模板,模板在使用之前,不能只有声明
5、。 模板类和模板函数只能全部放入头文件 可以将模板函数实现放入.inl文件,作为.h文件的附加,头文件依赖,头文件递归依赖是个错误 避免头文件重复依赖 可能会产生错误 编译性能下降 必要时可以只声明class 模板类不可以 优化设计,#ifndef _MY_INCLUDE_H #define _MY_INCLUDE_H #endif,设计导致的头文件过度依赖,/circuit.h class Wire; class Element; class Circuit bool addWire(Wire*); bool addElem(Element*); ,/element.h class Circ
6、uit; class Wire; class Element() Circuit* getParent() const; int isConn(const Wire ,class Element; class Circuit; class Wire void conn(Element*, int); void conn(Circuit*, int); ;,全局名字空间污染,全局名字空间的查找 全局数据 尽量少用全局变量 修改方法:将全局变量放入静态结构中 singleton设计模式 自由函数 可以并入静态结构 枚举、常量和typedef 尽量并入类中,名字空间namespace,使用namespace划分逻辑结构 namespace xxx 使用名字空间 using namespace xxx; using namespace xxx:foo; xxx:foo() 全局名字空间 : 名字空间的定义通常在头文件中,名字空间查找,编译器处理一个无约束的名字时,将 查找当前上下文 查找被using的具体名字 查找被using的名字空间 查找全局名字空间 在模板匹配、函数重载和全局运算符时很
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届江苏省无锡市惠山六校联考初三下学期第六次月考语文试题试卷含解析
- 2026届常州市武进区达标名校初三下学期第六次质量调研考试语文试题含解析
- 四川省资阳市资阳市雁江区重点名校2025-2026学年初三下学期第二次质量检测试题数学试题含解析
- 品牌宣传材料制作规范模板品牌传播标准化工具
- 文化创新产业扶持方案声明书(6篇)
- 食品生产和质量控制作业指导书
- 安全风险隐患治理措施承诺函7篇
- 自身品格修养改进承诺书(3篇)
- 高效能电池储能技术优化应用解决方案
- 文档管理自动化工具及使用教程
- 2025年保安员考试题(含答案)
- 2026年江苏航空职业技术学院单招职业适应性测试题库附答案解析
- 2026年江西省五方面人员考试《三农知识》
- 档案数字化加工考核制度
- 2026年及未来5年市场数据中国旅游食品行业发展运行现状及发展趋势预测报告
- 2026年商业银行支行行长竞聘管理能力面试问题含答案
- 2025年湖南中烟考试笔试及答案
- 主题一 学生实验 化学实验基本操作(课件)-【中职专用】高中化学同步课堂(高教版2023·农林牧渔类)
- 2026年度交通运输部所属事业单位第三批统一公开招聘参考考试试题及答案解析
- 雨课堂学堂在线学堂云商务英语翻译(Business English Translation Interpretation)西北工业大学单元测试考核答案
- 2025年人工智能数据中心建设项目可行性研究报告
评论
0/150
提交评论