在分析另一家公司提供的一些库代码时,我们遇到了奇怪的结构(可能是错误)。在头文件中,一个函数被声明为:
int funct(type1 var1, type2 var2, void* usr_arg);
(抱歉笼统的命名。NDA)但是在源文件中同名的函数被定义为:
int funct(type1 var1, type2 var2, long usr_arg)
{
// code goes here;
}
最奇怪的是,在使用提供的 makefile 进行编译时,一切正常。然而,当我们尝试配置 eclipse 项目时,它拒绝编译,并指向我们上面提到的两个函数头。
在我们的例子中使用的编译器是 ubuntu 下的 gcc,但是这个库应该也可以在 windows 下工作。我们怎样才能让 gcc 接受这个怪物呢?