我正在使用函数 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 之前在源代码中使用宏来完成。
  • Defining _GNU_SOURCE internally defines _USE_GNU
  • sched.h included <bits/sched.h>
  • In <bits/sched.h> , the function clone() is declared ONLY if _USE_GNU is defined
  • 关于clone() 函数隐式声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23579354/

    10-13 07:16