0

我使用 vfork() 在 C 中工作。我的程序运行良好,但我对隐式声明有警告。

我的代码:

if(vfork()==0){
...
}

我的警告是:

函数'vfork'的隐式声明[-Wimplicit-function-declaration] if(vfork()==0){^

我包括那些:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>

如果我使用 fork() 而不是 vfork() 警告消失了。Soo 问题只是我程序中的 vfork() 。我不知道这是什么意思或我如何解决这个问题。

4

3 回答 3

2

您需要包含以下 2 个标题:

#include <sys/types.h>
#include <unistd.h> 

另外,在程序的开头添加这一行:

#define _BSD_SOURCE 
于 2014-10-29T17:15:08.127 回答
0

如果您已经拥有所需的包含文件,那么根据您的系统版本,您可能需要定义一些功能测试宏。请参阅您系统的文档(man vfork在类 unix 系统上)

于 2014-10-29T17:21:27.090 回答
0

添加到 Igor 的答案中,确保您没有为 C99 编译。clang 给了我错误“函数 'vfork' 的隐式声明在 C99 中无效”,并-std=c99从参数中删除解决了这个问题。

于 2019-11-05T19:36:26.317 回答