我已经对我的 C++ 文件运行了代码格式化工具。它应该只进行格式更改。现在,当我构建代码时,我发现某些源文件的目标文件大小已更改。由于我的文件非常大,并且工具几乎改变了每一行,我不知道它是否做了一些灾难性的事情。现在我担心将此代码签入存储库,因为它可能会因格式化工具而导致运行时错误。 我的问题是,如果代码格式更改,目标文件的大小是否会更改?
简单的回答是否定的:)
如果不先彻底检查(审查、测试),我不会将代码签入存储库。
Pure 格式更改不应更改目标文件大小,除非您已完成调试构建(在这种情况下,所有的赌注都将被取消)。发布版本不仅应该具有相同的大小,而且除非您使用 __DATE__
等来插入预处理器内容,否则它也应该是逐字节相同的。
如果“重新格式化”工具实际上为您做了一些微优化(缓存对本地变量中的不变量的重复访问,或撤销不必要的操作),这可能会影响编译器做出的优化选择,这可能会导致对目标文件的影响。但我不认为情况确实如此。
if
##__LINE__
(这个宏经常隐藏在调试时的new和assert消息中。)
仅格式化代码不应更改目标文件的大小。
如果您使用调试符号进行编译,可能会出现这种情况,因为它可能添加了更多行号信息。通常情况下不会,正如已经指出的那样。
尝试找到一个不关心格式更改的比较工具(例如“diff--ignore-all-space”),并在签入之前检查使用该工具。