1、单独编译
自己的头文件里可放的内容:
函数原型,使用#define或const定义的符号常量,结构声明,类声明,模板声明,内联函数
对于自己写的头文件要双引号包含文件名,则编译器将首先查找当前的工作目录或源代码目录;当文件名包含在间括号中,则编译器将在标准头文件的主机系统的文件系统中查找。
在同一文件中只能将同一头文件包含一次。 C/C++中有基于预处理编译指令#ifndef(if not defined)
#ifndef COORDIN_H
……
#endif //代码的含义为当以前没有使用预处理编译指令#define定义名称COORDIN_H时,才处理#ifndef和#endif之间的语句。
2、存储持续性、作用域和链接性
存储:
自动存储持续性:在函数定义中声明的变量,在程序开始时被创建,在执行完函数或代码时,内存被释放。 //无链接性
静态存储持续性:在函数定义外定义的变量和使用关键字static定义的变量,他们在整个运行过程中都存在。
//在代码块内的使用关键字static,无链接性;在代码块外没有使用关键字static,有外部链接性;在代码快外,使用了关键字static,有内部链接特性
线程存储持续性: 使用关键字thread_local声明的,其生命周期与所述的线程一样长。
动态存储持续性:用new运算符分配的内存将一直存在,直到使用delete运算符将其释放或程序结束为止。
------------------
file1
int tom=3;
int dick=30;
static int harry=300; //只能在这个文件内部使用
------------------------
file2
extern int tom ; //使用的还是file1的文件中的变量
static int dick=10; //重载了dick,是内部链接