1.头文件:所有依赖头文件,函数的声明、类的声明、变量的声明(extern a)
类的声明:如果类的声明里面具体写了一些函数的实现,这些函数称作内联函数。通常在函数前面添加inline。但一般情况下只会在源文件里写函数具体实现细节。同理自定义函数也是这样。
事实上,假如在头文件int a,但是int a属于定义,已经分配内存,无初值,假如有不同的源文件依赖该头文件,这些源文件在分别单个编译后都会出现int a,随后各个源文件链接后,就会出现重定义问题。对于自定义函数和类它们不会出现这种情况,它们只需要保证声明唯一就行(没有实际对象分配资源)。
2.源文件:只依赖同名头文件(include),在这里int a,在头文件里extern a。在这里写函数的具体实现,和类里面的变量赋值,函数具体实现等。
If ndef //def 只能保证在单个源文件编译时一个头文件只依赖一次,但是可执行文件是由多个源文件链接而成,其他源文件可能也依赖该源文件,int a(在头文件)就会报错。