当格式化c++;代码 我所做的C++项目没有一致的缩进。首席开发人员告诉我,重新格式化代码可能不安全。我认为这可能与编译后的代码无关。作为测试,我尝试使用基于Eclipse“GNU[内置]”配置文件的格式化程序重新格式化一个文件。当我重新编译文件时,md5sum发生了变化。我对文件进行了hexdump,结果显示一个字节发生了变化。我反汇编了对象文件。我还通过调试进行了编译,得到了源代码行。我使用diff来获得修改过的汇编指令

当格式化c++;代码 我所做的C++项目没有一致的缩进。首席开发人员告诉我,重新格式化代码可能不安全。我认为这可能与编译后的代码无关。作为测试,我尝试使用基于Eclipse“GNU[内置]”配置文件的格式化程序重新格式化一个文件。当我重新编译文件时,md5sum发生了变化。我对文件进行了hexdump,结果显示一个字节发生了变化。我反汇编了对象文件。我还通过调试进行了编译,得到了源代码行。我使用diff来获得修改过的汇编指令,c++,assembly,C++,Assembly,消息来源是这条线 logErr << xmlutils.GetErrorMessage() << endl; logErr 托马斯和蒂姆是对的。更改的值对应于格式化前后的行号。我以为“logErr”只是一条小溪。原来它是一个使用\uuuuuu行\uuuuu宏的宏。因此,行号在部件中是硬编码的 #define logErr theTracer().SetFuncName(__func__); theTracer().SetFile(__FI

消息来源是这条线

        logErr
        << xmlutils.GetErrorMessage() << endl;
logErr

托马斯和蒂姆是对的。更改的值对应于格式化前后的行号。我以为“logErr”只是一条小溪。原来它是一个使用
\uuuuuu行\uuuuu
宏的宏。因此,行号在部件中是硬编码的

#define logErr theTracer().SetFuncName(__func__); theTracer().SetFile(__FILE__); theTracer().SetLine(__LINE__); theTracer().SetError(); theTracer()

谢谢您的帮助。

这与行号有关,还是与源文件中的其他位置有关?有一些类似的东西对位置很敏感。更改空格不会更改堆栈偏移量,除非值位于字符串或引号集中。也许是日期被使用了,它被改变了还是什么?@ThomasJager是对的。如果这是一个“调试”构建,那么包含行号的调试断言就是这样。如果这是第377行,那么这就是问题所在。文件中的许多行都已更改。差分输出为1400。线。但这是唯一改变的指令。该行显示在文件中的另一个位置,并已重新格式化。十六进制转储中没有更改。请将答案作为答案发布,而不是对问题进行编辑。当你有一个真实的答案时,自我回答的问题会被鼓励。(即,代码的行为取决于源行号。)
#define logErr theTracer().SetFuncName(__func__); theTracer().SetFile(__FILE__); theTracer().SetLine(__LINE__); theTracer().SetError(); theTracer()