[英]undefined reference to function in gcc pthreads C
我有一个带有名为par.c
pthread的代码,但是当我尝试使用以下命令对其进行编译时: gcc par.c -lpthread -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 inline
。 static
意味着该函数只能在同一编译单元中链接(例如,此.c文件专用)。 无论如何,内联函数都应该是这种情况,因此我无法告诉您为什么会有所不同,但是它对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.