gpt4 book ai didi

c - 对 gcc pthreads C 中函数的 undefined reference

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:44 26 4
gpt4 key购买 nike

我有一个名为 par.c 的 pthreads 代码,但是当我尝试使用命令编译它时: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 inlinestatic 意味着该函数只能在同一个编译单元中链接(就像它是这个 .c 文件的私有(private)函数一样)。无论如何,内联函数都应该是这种情况,所以我不能告诉你为什么它会有所不同,但它对我有用。

关于c - 对 gcc pthreads C 中函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47154057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com