在头文件之前包含其他头文件与在源文件前包含头文件有什么区别 (使用头文件)
本文目录导航:
在头文件之前包含其他头文件与在源文件前包含头文件有什么区别
相同点:头文件与源代码都是源文件,都用纯文本文件存储,都需要遵照C/C++语言规范来写,都可以使用类型定义和常、变量定义,都可以包含函数的声明和实现,都能包含宏定义,都使用相同的调用规范。
不同点:C/C++的编译器规定源代码文件必须包含函数入口,即main函数,或者winmain函数。
而头文件不得包含函数入口,也就是说,头文件不可以单独编译成一个程序,仅仅包含程序片断或者仅仅定义常、变量。
关联:头文件是专为源代码调用而写的静态包含文件,可被源代码文件中的#include编译预处理指令解释,而将头文件完整拷贝到源代码的指令处,从而在编译时相当于在源代码中插入了函数声明或者实现。
某些头文件包含了静态库中的函数调用声明,包含了LIB文件的调用信息,编译时静态链接进程序;而某些头文件是专为方便API调用而写的,里面包含了动态链接库的调用信息和规范,只有在运行时将DLL载入内存提取函数执行。
也就是说,其实你将头文件里的信息完全写到源代码里,是可以实现完全相同的功能的。
如果你想要学写头文件,可以参照标准C/C++库的h文件。

头文件中都放什么东西?
一般来说如果一个程序包含了头文件和实现文件比如C++的,CPP为实现文件而H就为头文件.那么通常情况下一些变量的声明,函数声明,类声明,结构体的定义这些东西一般都放在头文件中.而实现文件则是这些函数具体的实现方法等.而有些人编写的时候可能没有头文件,只有个实现文件(很多人用VC写的控制台程序就这样),这不能说他没有声明,只是他把声明写在了实现文件里,这也是可以的.另外有个特点,拿VC的编译器来说,他只会编译实现文件()而当实现文件里遇到编译器的包含指令 #include 的时候他就会自动展开这个包含的头文件,所以有些时候引用头文件的顺序还有很微妙的关系,先引用哪个后引用哪个非常微妙,这个等遇到了自然就知道了.附带一句:头文件是不参加编译的.
一个头文件中包含另一个大头文件有什么坏处 ?
个人理解1) 编译速度会变慢很多2) 头文件互相依赖过多时,其中一个头文件改了,就会导致大量的cpp要重新编译.而尽量只在cpp中包含, 就有能把依赖关系降到最小. 当你需要维护一份几十万行的代码时, 你就知道这种影响有多大了. 我曾整理一个工程, 只是简化了头文件的依赖, 编译速度立马上升3倍.