最近在修改产品的代码,增加一个额外的功能,每天陷入了 改代码–编译–数bug–改代码–编译 的循环。上大学时只学过一门课《C语言程序设计》,学完之后感觉自己好像懂了,看到一个程序大概知道每一部分在干嘛;但又好像啥都不懂,甚至在用IDE的时候都不是很明白compile和build的区别,现在想想,当时真是傻得可爱呀。
compile:仅编译cpp文件,生成对应的obj目标文件,但是并不对目标文件进行链接(即不会生成exe可执行文件);
build:编译并链接,最终生成可执行文件exe或者链接库文件lib或者dll.
rebuild:这个相当于clean+build,因为build命令一般仅对发生修改后的文件执行命令。有时工程出现了难以用理论解释的神奇bug时,rebuild一下可能就好了。
每天看着IDE consle里编译时输出的一行行结果,我就在想:这C++在编译的时候都干些啥啊?若干个cpp文件和hpp文件怎么就最后生成了一个exe可执行文件?花了一个小时的时间,我初步理解了C+\编译和链接的过程,其可分为 预编译–编译–链接 三个过程。
预编译
在上学时经常听老师讲#是预编译符号,后面跟的是预编译命令,如define,include,ifndef…define…endif等等。顾名思义,预编译是为编译过程做准备的,其实质是完成预编译命令的展开与替换。例如,#define PI 3.14,预编译则将文中所有的PI替换为PI,同时将符合条件的include内容展开到cpp文件中。</