C-函数的隐式声明;pthread_timedjoin_np“;

C-函数的隐式声明;pthread_timedjoin_np“;,c,linux,multithreading,redhat,porting,C,Linux,Multithreading,Redhat,Porting,我正在将windows库移植到linux。我需要使用timed join来等待线程在特定的超时时间加入 当我在Linux上编译库时,我得到了警告 函数的隐式声明-pthread\u timedjoin\u np 我已经包含了pthread.h,并使用-lpthread链接进行了编译。我知道pthread_timedjoin_np是一个非标准的GNU函数。该功能首次出现在glibc 2.3.3版中。在BCD v6的某个地方 我甚至检查了Linux的版本,但没有得到任何帮助。如何避免此警告?有什么帮

我正在将windows库移植到linux。我需要使用timed join来等待线程在特定的超时时间加入

当我在Linux上编译库时,我得到了警告

函数的隐式声明-pthread\u timedjoin\u np

我已经包含了pthread.h,并使用-lpthread链接进行了编译。我知道pthread_timedjoin_np是一个非标准的GNU函数。该功能首次出现在glibc 2.3.3版中。在BCD v6的某个地方

我甚至检查了Linux的版本,但没有得到任何帮助。如何避免此警告?有什么帮助吗

编辑-1: 我的系统是RedHat 5。

在包含任何标题之前,请确保
#define(定义)GNU(源代码)。宏由
设置,其中包括GNU C库的各个部分。如果在定义
\u GNU\u SOURCE
之前包含了其他标题,
将已经包含,并且不会看到
\u GNU\u SOURCE


更容易,只要用编译器添加<代码> -dgNuuSux< /Cult>作为编译器标志来定义它。< /P>是C++还是C?如果是C++,使用新的C++ 0x标准STD::Type类,它将是便携式的,而不用担心它,并删除C标记。如果是C,请删除C++ TAG。道歉,是C!我误用了标签。让我把它拿走!您是否在

#include
之前定义了#define#GNU#SOURCE
?对不起,我的回答错了。检查,在包含任何标题之前是否定义了
\u GNU\u SOURCE
?您还可以将其添加到编译器命令中,
-D_GNU_SOURCE
@jparthj您可以显示您的代码(至少在包含标题的位置)和用于编译此文件的命令吗?@Collin,我遇到了同样的问题,您的答案解决了它!!谢谢正如您所说,
#define _GNU_SOURCE
必须在包含任何标题之前。