有人可以解释幕后导致此用户错误不一致崩溃的原因。C C++函数名称冲突和崩溃不一致
这里的主要功能是
#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.h和foo.C
在我的同事更新他的foo.C中的一些其他功能后,代码仍编译好,但它开始崩溃执行。
通过ddd进行调试表明,当我的主函数调用Bar()时,它实际上调用了foo.C中的Bar()而不是我自己定义的Bar()。
因为修复是静态我自己的功能或更改我自己的Bar()函数的名称。
我知道写这样的代码是混乱的,并且很容易出现这样的错误。有人可以向我解释为什么代码崩溃不一致?
谢谢大家
问候
是有一些原因,你不能只命名函数别的东西吗?的 – Wug 2012-07-13 20:41:35
可能重复[它是一个未定义的行为有一个内联函数的定义不同?(http://stackoverflow.com/questions/11200805/is-it-an-undefined-behavior-to-have-different-definitions内联函数) – 2012-07-13 21:19:18
这个问题有点混乱,因为标题中显示“C”,而你的文件是“foo.c”(而不是“foo.cxx”或“foo.cpp”),但你显然是用C++编写的(参考文献)。无论如何,这违反7.1.2(4)。 – 2012-07-13 21:21:40