2014-02-25 67 views
3

我正在將一個windows庫移植到linux。我需要使用定時連接來等待線程加入特定的超時。C - 隱式聲明函數「pthread_timedjoin_np」

當我編譯Linux上的圖書館我收到警告的功能

隱聲明 - pthread_timedjoin_np

我已經包含pthread.h,並與-lpthread鏈接編譯。我知道pthread_timedjoin_np是一個非標準的GNU函數。該函數在2.3.3版本中首次出現在glibc中。以及BCD v6中的某處。

我甚至檢查了Linux的Man Page,但沒有得到任何幫助。我如何避免此警告?任何幫助?

編輯-1: 我的系統是RedHat的5

+0

這是C++還是c?如果它是C++,則使用新的C++ 0x標準std :: thread類,它將是便攜式的,無需擔心並刪除c標籤。如果是C,請刪除C++標籤。 –

+0

道歉,這是C!我濫用了標籤。讓我刪除它! –

+1

您確定了#define _GNU_SOURCE – Pradheep

回答

6

確保#define _GNU_SOURCE是任何你的頭都包含了。宏由<features.h>設置,其中包括GNU C庫的各個部分。如果您在定義_GNU_SOURCE之前包含其他標題,則<features.h>已包含在內,並且將不會看到_GNU_SOURCE

更容易,只需要編譯器添加-D_GNU_SOURCE作爲編譯器標誌來定義它。

+0

我已經試過了,不工作! –

+0

@jparthj你可以顯示你的代碼(至少你在哪裏包括頭文件)以及你用來編譯這個文件的命令嗎? – Collin

+0

@Collin,我有同樣的問題,你的答案解決了它!謝謝。正如你所說的,'#define _GNU_SOURCE'必須在包含任何頭文件之前。 – ogs