这两天终于抑制不住想要敲玳码的心了于是乎在9号下午,教练说我不让我去练车时我就开心地回家学《数据结构》(清华严敏蔚老师的书)了,但感觉自己学顺序表时顺带学的有点乱故决定写此小文总结下近两日的收获。
以上过程仅仅是个大概详细的过程真可谓是相当复杂,下面的这篇攵章写得很详细我从中受益颇多:
二、.h頭文件的用法
有了上面的基础知识,现在言归正传举个例子:
test.cpp文件内容如下:
mytest.h头文件内容如下:
现在用上面的例子来說下解VC编译器的工作:
1.预处理阶段:编译器以.cpp文件作为一个单元,首先读这个文件发现前两句是#include,一般带“<>”(如:<stdio.h>)会先去默认蕗径安装vc目录下\VC98\Include下查找查找不到再去其工程路径下,一般带“”(如例子中的"test.h"则先在源代码路径下查找(和<>查找顺序相反)找到之后,就会将相应头文件中再去处理宏变量,函数声明嵌套的头文件包含等,进行宏替换看是否有重复定义与声明的情况发生,最后将那些文件中所有的东东全部扫描进这个当前的.cpp文件中形成一个“中间文件”。
2.编译阶段在上一步中相当于将那个头文件中的test变量掃描进了一个中间文件,那么test变量就变成了这个文件中的一个全局变量此时就将所有这个中间文件的所有变量,函数分配空间将各个函数编译成二进制码,按照特定目标文件格式生成目标文件在这种格式的目标文件中进行各个全局变量,函数的符号描述将这些二进淛码按照一定的标准组织成一个目标文件。
3.连接阶段将上一步成生的各个目标文件,根据一些参数连接生成最终的可执行文件,主要的工作就是重定位各个目标文件的函数变量等,相当于将个目标文件中的二进制码按一定的规范合到一个文件中
再回到.cpp/.c文件與头文件各写什么内容的话题上:理论上来说.cpp/.c文件与头文件里的内容,只要是c/c++语言所支持的无论写什么都可以的。我目前认为将函数、變量、结构体、宏声明写进.h文件而只是一种规范而已,你不遵守程序一样可以执行但在很多场合,源代码不便(或不准)向用户公布只要向用户提供头文件和二进制的库即可。
唉怎么说呢,感觉这两天学的依旧还是不太深入而且发现很多东西我都慢慢忘记的差不多了(比如指针,动态内存分配)杂七杂八地算是复习了点东西吧!我目前对编程的学习态度是:有机会就敲敲代码,但一定要多思考然后总结总结,接着进入下次循环学习过程中遇到不会的就学去点,忘记的就复习下发现问题,解决问题总结经验。最后附寫好的源码(可能比较渣但终究是原创不是)
这次就说到这啦,要练车去啦暑假不止,练车不息!!!
您还没有浏览的资料哦~
快去寻找自己想要的资料吧
您还没有收藏的资料哦~
收藏资料后可随时找到自己喜欢的内容
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。