有人可以解释此用户错误导致不一致崩溃的幕后原因。
这里是主要功能
#include "foo.h"
inline int Bar(const int &a)
{
...
}
...
int b=Bar(a);
在“foo.C”中还有一个函数的副本
inline int Bar(const int &a)
这是问题所在。我既没有 foo.h 也没有 foo.C,并且 foo.h 中没有 Bar(int) 的声明。
在我的同事更新了他的 foo.C 中的一些其他函数之后,一切都可以编译并与旧版本的 foo.h 和 foo.C 一起正常工作,代码仍然可以正常编译,但它在执行时开始崩溃。
通过 ddd 调试显示,当我的 main 函数调用 Bar() 时,它实际上是在 foo.C 中调用 Bar(),而不是我自己定义的 Bar()。
当然,修复是静态我自己的函数或更改我自己的 Bar() 函数的名称。
我知道编写这样的代码杂乱无章,并且容易出现这样的错误。有人可以向我解释为什么代码会不一致地崩溃吗?
谢谢你们
问候