C语言编译器会编译改变过的代码,而不会编译没有改动的代码。 我想知道它是怎么判断程序是否有呗修改过的

可能是时间,希望能够详细点,可能很多人也不懂

编译器要记录你的编译生成文件,比如obj、exe等的生成日期,发现与相关的文件如.c源文件、obj等日期旧时则选择对此部分重新编译。
特别地,它记录所有相关文件,比如你新修改了某头文件.h,编译系统会逐一比较所有使用这个.h文件的编译结果,如果发现时间旧了就重新编译它们。追问

这个我大概懂了,可以编译器是怎么生成.obj的列表的额?
我新增加一个模块test.c, test.h, 编译器是怎么知道要去生成test.obj的?

追答

如果你是在集成环境中添加的,集成环境会自动为你的c程序编译生成若干行编译控制语句,并在编译初期扫描你的c程序用到哪些h文件。
如果你用类似Linux编译环境的那种命令行方式,你还必须手动在make文件中写上这些控制行才行。
集成环境实际上是自动为你写make脚本了,编译时还是要用命令行方式调用编译器。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-30
其实说起来很简单,用的是一个很笨的规则.
每个文件都有它的修改时间,
每次编译的时候,会检查目标文件的修改时间,和源文件/头文件修改时间.
如果源文件修改时间在目标文件修改时间之后,则编译该源文件.
如果头文件修改时间在目标文件修改时间之后,则编译所有引用该头文件的源文件.本回答被网友采纳
第2个回答  2013-03-14
要记录你的编译器生成的文件之日起,如OBJ,EXE生成的编译器发现相关的文件,如C源文件,老obj的日期选择这部分重新编译。 特别是,它记录了所有相关的文件,例如,你了一个新H头文件,生成系统将通过横向比较。 h文件编译的结果,如果我们找到了老的时候重新编译它们。
第3个回答  2013-02-01
检测源文件的改动时间和.o的生成时间,如果.o的生成时间比源文件的改动时间新,则不再重新编译,若旧,则重新编译追问

.o文件编译完成后被删掉吧,估计是.obj文件吧,因为.obj文件时不会被删掉的,编译时也是去编译.obj文件

第4个回答  2013-04-11
你可以打入菜单栏中的“设置”项,在大选前编译的代码,然后设置,可以运行。通过使用下面的代码调试提示检查。
相似回答