別の会社から提供されたいくつかのライブラリ コードを分析しているときに、奇妙な構造 (おそらくエラー) に遭遇しました。ヘッダー ファイルで、関数は次のように宣言されました。
int funct(type1 var1, type2 var2, void* usr_arg);
(一般的な命名で申し訳ありません。NDA)しかし、ソースファイルでは同名の関数が次のように定義されていました:
int funct(type1 var1, type2 var2, long usr_arg)
{
// code goes here;
}
そして最も興味深いのは、提供された makefile を使用してコンパイルすると、すべてが正常に動作することです。しかし、Eclipse プロジェクトを構成しようとすると、コンパイルが拒否され、上記の 2 つの関数ヘッダーが示されました。
今回使用したコンパイラは ubuntu の gcc ですが、ライブラリは Windows でも動作するはずです。どうすれば gcc にこの怪物を受け入れさせることができるでしょうか?