1 #include"xxx.h"其实是把.h的内容直接拷贝到对应的文件里,如果里面的函数和变量没有加static,就默认是extern
static 就是说只有本编译单元能访问这个函数或变量,extern 是指不仅内部编译单元能访问,外部编译单元也能访问
2 .h只是为了方便,它只是把所有公共的函数打包到一起给其它编译单元使用,为什么呢,假如你的程序里可以只有cpp,要访问外部函数,就需要声明,如果多个编译单元要同一个函数,就需要声明多次,所以就将函数声明放在.h里,如果需要就只用#include ".h"就行了
3 cpp才是编译的基本单元,你可以在工程中只定义一个.h文件,然后写main函数,你会发现有编译错误,找不到源文件,这时你只用再定义一个cpp,然后只用包含这个头文件,你会发现编译可以通过
4 如果在.h中定义全局变量或者函数,那么被包含两次就会发生多重定义的问题,不过如果是定义类的话,就不会出现类似问题