このユーザー エラーの一貫性のないクラッシュの舞台裏の原因を誰かが説明してくれませんか。
主な機能はこちら
#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() を呼び出すと、実際には自分で定義した Bar() ではなく foo.C 内で Bar() を呼び出していることがわかりました。
原因の修正は、自分の関数を静的にするか、自分の Bar() 関数の名前を変更することでした。
このようなコードを書くとまとまりがなく、このようなエラーが発生しやすいことを私は知っています。誰かがなぜコードが矛盾してクラッシュするのか説明してもらえますか?
皆さん、ありがとうございました
よろしく