gcc pthreads C中函数的未定义引用

gcc pthreads C中函数的未定义引用,c,function,reference,pthreads,undefined,C,Function,Reference,Pthreads,Undefined,我有一个名为“代码>代码> PAR.C.的代码,但是当我尝试用命令编译它: GCC PA.C -LPth-O-PAR < /代码>时,它给了我这样的代码: /tmp/ccAzMTL8.o: In function `compare': par.c:(.text+0x414): undefined reference to `exchange' 功能是 inline void exchange(int i, int j) { int t; t = a[i]; a[i] = a[j];

我有一个名为“代码>代码> PAR.C.<代码>的代码,但是当我尝试用命令编译它:<代码> GCC PA.C -LPth-O-PAR < /代码>时,它给了我这样的代码:

/tmp/ccAzMTL8.o: In function `compare': par.c:(.text+0x414): undefined reference to `exchange'
功能是

inline void exchange(int i, int j) {
  int t;
  t = a[i];
  a[i] = a[j];
  a[j] = t;
}

inline void compare(int i, int j, int dir) {
  if (dir==(a[i]>a[j])) 
    exchange(i,j);
}
大体上,我有两个:

void compare(int i, int j, int dir);
inline void exchange(int i, int j);

有人知道为什么会发生这种情况吗?

我假设您发布的所有代码都在同一个.c文件中


我过去也有同样的问题。必须将内联函数的实现声明为
静态内联
static
表示函数只能链接到同一个编译单元中(就像它是这个.c文件的私有文件一样)。内联函数应该是这样的,所以我不能告诉您为什么它会有不同,但它对我来说是有效的。

我假设您发布的所有代码都在同一个.c文件中


我过去也有同样的问题。必须将内联函数的实现声明为
静态内联
static
表示函数只能链接到同一个编译单元中(就像它是这个.c文件的私有文件一样)。无论如何,这应该是内联函数的情况,所以我不能告诉你为什么它会有区别,但是它对我来说是有效的。< / P>一切都在同一个文本文件里。对不起,我的意思是一个文本文件,我把它命名为P.CI。有什么方法我可以给你发一个PM吗?代码相当大,我不会发布它。您可以(而且应该)删除源代码中所有不相关的部分,形成一个最小的完整的可验证示例。可以剥离所有逻辑和功能体。它不需要有任何意义,但只显示问题。删除过时的评论……所有的东西都在同一个文本Fieli对不起,我的意思是一个文本文件,我命名为P.CI有任何方式,我可以给你一个下午?代码相当大,我不会发布它。您可以(而且应该)删除源代码中所有不相关的部分,形成一个最小的完整的可验证示例。可以剥离所有逻辑和功能体。它不需要有任何意义,只需要显示问题。删除过时的评论…如果解决了您的问题,请始终接受答案。如果解决了您的问题,请始终接受答案。