《大规模c++程序设计》笔记
来源:互联网 发布:fft算法c语言实现详解 编辑:程序博客网 时间:2024/06/05 20:47
头文件卫哨
每个头文件一般会包含卫哨,即下面的定义:
//foo.h
#ifndef FOO_H
#define FOO_H
#endif
另外还有一种卫哨称为包含卫哨,如:
//foo.h
#ifndef FOO_H
#define FOO_H
#ifndef TOOLS_H
#include "tools.h"
#endif
#endif
通过包含卫哨,即使不修改其它代码,也能大大节省编译时间。
物理依赖
在物理依赖中,组件是最小单位,一个组件包含一个.h和.c文件。关系紧密的逻辑组件应当包含在一个组件中。
通过头文件的包含关系,可以推导出整个工程的物理依赖,但有些情况下会导致隐含依赖。
比如在.c文件中使用extern声明外部变量会导致隐式依赖另外一个物理组件,更坏的是,如果原来的函数声明变了,extern声明没有变,会导致错误。所以应该用头文件包含替代这种extern的方式。
在.c文件中,应该把对应的.h文件放在包含的第一位,这样可以发现未声明的依赖,如果客户组件包含一些头文件时发现必须遵守一定顺序,通常有这种问题。
例如:
//foo.c
#include <iostream>
#include "foo.h"
ostream& operator<<(ostream& , foo& );
//test.c
#include "foo.h"
#include <iostream>
这时test.c就有可能编译通不过,如果foo.h没有包含iostream的话,如果在foo.c中把foo.h包含放在第一个,很容易发现这种问题。
依赖是可以传递的。
isA和hasA必然导致物理依赖,use和HoldsA(包含指针或引用)可能导致物理依赖。
- C++大规模程序设计 笔记
- 《大规模c++程序设计》笔记
- 大规模程序设计笔记(一)
- 大规模c++程序设计摘要
- C++大规模程序设计
- 大规模C++程序设计-概述
- 《Objective-C程序设计》笔记
- c++阅读笔记1————(大规模c++程序设计阅读笔记)
- 《大规模C++程序设计》读书笔记1
- 《大规模C++程序设计》读书笔记2
- 《大规模C++程序设计》读书笔记3
- 《大规模C++程序设计》读书笔记4
- 《大规模C++程序设计》读书笔记5
- 《大规模C++程序设计》读书笔记6
- 《大规模C++程序设计》读书笔记7
- 《大规模C++程序设计》读书笔记8
- 《大规模C++程序设计》读书笔记9
- 《大规模C++程序设计》读书笔记10
- UDP、TCP、调用WebService、序列化、数据库设计范式、聚簇索引、非聚簇索引
- linux下CDPATH环境变量的应用
- JS操作cookie
- android 应用程序Activity之间数据传递与共享的几种途径
- 组件服务里面Microsoft Excel,点击右键以后没有属性。
- 《大规模c++程序设计》笔记
- 路径,文件,目录,I/O常见操作汇总
- 侵入式和非侵入式的区别
- LINQ TO XML
- 常量指针与指向常量的指针
- Delphi 给窗体上面所有的控件都挂上一个事件处理过程华软源码
- 安装OFFICE的时候,弹出提示框“阻止访问注册表编辑工具”
- 移动互联网的未来在非洲
- C++ Primer:Exercises Section 2.2