编译一个 c文件时,C预处理器(C Pre-Processor,CPP)首先(递归地)包含头文件,形成包含所有必要信息的单个源文件。之后,编译这个中间文件(称为编译单元)生成一个和根文件名字一样的 o文件(目标文件)。
一个声明就是一个定义,除非:它声明了一个没有具体说明函数体的函数;它包含一个extern说明符,并且没有初始化程序或函数体;它是一个类定义内的静态类数据成员的声明;它是一个类名的声明;它是一个typedef声明
对于小程序以外的所有程序,将整个程序放置在单个文件中是既不明智也不实际的。这样做,改变程序的任何一部分,都会迫使整个程序重新编译。而且,如果不复制源代码到另一个文件,也无法在另一个程序中重用程序的
本章回顾C++程序设计语言和面向对象分析的一些重要知识,对于大规模系统设计来说,这些都是基础知识。本章没有提出新的知识,不过读者对某些内容可能不太熟悉。我们从检查多文件程序、声明和定义、头文件( h)和
C++不仅仅是C的扩展。编译单元内的循环链接时依赖可能会破坏可理解性、可测试性和重用性。不必要的或过多的编译时依赖可能增加编译成本并破坏可维护性。当项目规模变大时,采用紊乱的、不规范的、不成熟的C++开发
大型项目可以从各类工具中受益,包括浏览器、增量式链接器和代码生成器。即使是简单的工具也可能非常有用。附录C中提供了一个简单依赖分析器的详细描述,我发现这个分析器在我自己的工作中是非常有价值的。某些工
QA必须成为开发过程中不可或缺的一部分。在这个过程模型中,开发者有责任保障软件产品的质量。也就是说,产品质量必须已经达到一定程度,支持测试工程师要做的是去发现这一点。在这个过程模型中,QA和开发不能区
质量保证(Quality Assurance,QA)一般是一个公司内部负责确保产品质量已达到某种标准的组织。软件达到高质量的重大障碍是,经常到开发的后期,破坏已经形成后QA才会介入。QA通常不能影响软件产品的设计。QA很
质量有许多个维度。可靠性是质量的传统定义(如,这是一个buggy吗)。一般来说,一个软件产品易用并且大部分时间都在做正确的事情就足够了。然而,对于某些应用程序——像航空、医药和金融领域的应用程序——软件
面向对象设计将重用作为一种激励,然而像其他技术一样,要获得好处,不是没有代价的。重用意味着耦合,而重用中的耦合是我们不希望看到的。如果若干程序员试图使用同样标准的组件而不要求改变功能,则重用很可能
大部分关于C++的书中只讲述了逻辑设计。逻辑设计是指从属于诸如类、运算符、函数等语言结构的那些设计。例如,一个特定的类是否应该有一个拷贝构造函数,就是一个逻辑设计问题。决定一个特定的运算符(如操作符=
如果你曾经做过多人合作的C++项目,那么就会知道软件集成常常会出现一些意想不到的事情。特别是,全局标识符的广泛应用可能会引发问题。一种显而易见的危险是这些名字可能会存在冲突。结果是,若不修改名字冲突,
如果你曾经尝试过用C++开发多文件程序,那么就会知道更改一个头文件可能会引起许多编译单元重新编译。系统开发的最早期阶段,进行一次更改会迫使整个系统重新编译,这不存在多大的负担。然而,随着系统的继续开发
如果你试图在一个库中链接少量的功能,同时发现链接时间的增加与你获得的收益不成比例,你也许尝试过重用重量级组件而不是轻量级组件。对象的好处之一是在需要时很容易添加丢失的功能。面向对象范型这种几乎诱人
作为一名软件专业人士,你可能已经遇到过这样的情况:第一次查看一个软件系统,似乎找不到一个合理的起点或者自身有意义的系统片段。不能独立理解或者使用系统的任何部分,这就是循环依赖设计的一种症状。C++对象
如同C程序一样,写得很糟糕的C++程序可能会难以理解和维护。如果接口没有完全封装,则很难进行调整或者加强实现。糟糕的封装将会阻碍重用,也可能会导致可测试性方面的优势完全消失。与流行的观点相反,从根本上
人们普遍认为在管理大型系统的复杂性方面,面向对象范型存在潜在优势。在写作本书时,C++程序员的数量每7~9个月就会成倍增加。在经验丰富的C++程序员手上,C++是人工技能和工程人才强有力的放大工具。但是,如果
开发优秀的C++程序并非易事。随着项目变得更大,使用C++开发高可靠性和易维护的软件变得更加困难,而且会涉及许多新概念。正如木匠建造一栋房屋所获取的经验不适用于建造一栋摩天大楼一样,从开发小型C++项目那里
译者序前 言第0章 概述 10 1 从C到C++ 10 2 使用C++开发大型项目 20 3 重用 90 4 质量 100 5 软件开发工具 120 6 小结 12第一部分 基 础 知 识第1章 预备知识 151 1 多文件C++程序 151 2
作为Mentor Graphics公司IC部门的一员,我有幸和一群聪明且有才华的软件工程师一起工作,共同开发了一些非常大型的系统。早在1985年,Mentor Graphics公司就是最早使用C++开发实际大型项目的公司之一。那时,没