9.1 单独编译
把独立的函数组件放在单独的文件中,单独编译过后将他们链接成为可运行的程序
单独编译带来的问题:
在多个文件中都使用到同一结构声明时,结构进行修改要将每一个文件中的结构声明进行对应修改
解决方案:
将所有被共同使用的结构等声明放入头文件,所有文件包含该头文件,修改时只用修改头文件即可
头文件中包含的内容
- 函数原型(声明)
- 使用#define 和const 声明的符号常量
- 结构声明
- 类声明
- 模板声明
- 内联函数
所以头文件中声明的函数,都是在源代码文件中定义的
9.2 存储的持续性,作用域和链接性
数据保存方案
- 自动存储持续性
- 静态存储持续性
- 线程存储持续性
- 动态存储持续性
9.2.1 作用域和链接
作用域(scope):表示名称在文件的多大范围可见
链接性(linkage):在不同单元间共享
9.2.2 自动存储持续性
默认状况,函数中声明的函数参数或者变量的存储持续性都是自动的,作用域为局部,即只在函数内有用。
但当函数内部定义的参数名与外部定义的参数同名时,暂时隐藏外部参数名,在函数内部以内部定义为准。