我正在使用函数 clone()
创建线程。问题是我在编译过程中遇到了这个错误:
implicit declaration of function ‘clone’ [-Wimplicit-function-declaration]
我包括
<linux/sched.h>
。可能是什么问题? 最佳答案
在源文件的顶部添加以下行
#define _GNU_SOURCE
#include <linux/sched.h> /* or #include <sched.h> */
_GNU_SOURCE
是一个 功能测试宏 。功能测试宏允许程序员控制编译程序时由系统头文件公开的定义。为了有效,必须在包含任何头文件之前定义功能测试宏。这可以在编译命令 (
cc -DMACRO=value
) 中完成,也可以通过 #define
- 在 #include
-ing 任何 header 之前在源代码中使用宏来完成。_GNU_SOURCE
internally defines _USE_GNU
。 sched.h
included <bits/sched.h>
<bits/sched.h>
, the function clone()
is declared ONLY if _USE_GNU
is defined 。 关于clone() 函数隐式声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23579354/