错误:函数`int open(...)'的隐式声明

时间:2017-05-10 10:43:22

标签: c++ unix gcc solaris

我在Solaris OS上的一个C ++项目中使用open函数。

#include <sys/types.h> 
#include <sys/stat.h> 
#include <fcntl.h>

char in_pathname[PATH_MAX];
int  in_fd = -1;
in_fd = ::open(in_pathname, (O_RDWR|O_CREAT|O_TRUNC), 0600);

使用上面的代码我遇到了编译错误。

函数的隐式声明`int open(...)'

知道为什么会这样。

注意:此源代码非常旧,我使用gcc版本2.95.3进行编译。

1 个答案:

答案 0 :(得分:1)

一些(较旧的)编译器将允许您使用未声明的函数,并假设它返回int。

如果您使用文件但未包含声明的标头,则会发生这种情况。您似乎使用文件的open方法,these docs建议您需要

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>