簡體   English   中英

對gcc pthreads C中函數的未定義引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM