Alp*_*neo 0 c compilation visual-c++
我使用C开发了一个Windows命令行工具,并在VC++中编译,有时返回,并签入源代码.我在签入之前清理了项目,除了其他文件之外删除了.exe,.obj文件.我继续使用命令行工具.
几个月后,我检查了源代码,再次编译,但生成的EXE与早期编译的版本不匹配.
我的问题,
VC++生成的可执行文件是否随重新编译而变化?还是我错过了什么?
看看这个问题的答案,每次都无法强迫VS输出相同的二进制数.编译器在可执行文件中嵌入了一些元数据,例如时间戳,这就是二进制文件在编译之间不相同的原因.
其中一个答案也与这篇MSDN博客文章有关,该文章指出:
...编译器编写者更有兴趣生成正确运行的代码并快速生成代码,而不是确保生成的内容在硬盘驱动器上的布局相同.由于优化代码的方法和实现众多且多样化,因此总有可能一个构建最终会花费更多时间来执行额外或不同于另一个构建的操作.因此,对于相同的功能,最终结果可以是不同的位组.
所以,你的答案是肯定的,二进制文件不是逐位相同的,但它们在功能上应该是相同的.