我在 CentOS7 中使用 gcc 编译此代码 main.c:
#include <pthread.h>
void* mystart(void* arg)
{
pthread_yield();
return(0);
}
int main(void)
{
pthread_t pid;
pthread_create(&pid, 0, mystart, 0);
return(0);
}
第一次编译:gcc -Wall -g main.c -pthread -o a.out
一切都好。
第二次编译:gcc -Wall -g main.c -lpthread -o a.out
Gives
警告:函数“pthread_yield”的隐式声明 [-Wimplicit-function-declaration]
- 可以2号吗
a.out
仍然运行正确吗?
- 如何修复警告而不
-pthread
? Is sched_yield
另一种产生 pthread 的方法?
pthread_yield()
是一个非标准函数,通常通过定义来启用
#define _GNU_SOURCE
虽然你应该使用-pthread
对于编译,我希望你会得到同样的警告both汇编(除非-pthread
定义_GNU_SOURCE
可能是这种情况)。
正确的修复方法是not使用非标准函数pthread_yield()
并使用 POSIX 函数sched_yield()相反,通过包括#include <sched.h>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)