我在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进行编译。
答案 0 :(得分:1)
一些(较旧的)编译器将允许您使用未声明的函数,并假设它返回int。
如果您使用文件但未包含声明的标头,则会发生这种情况。您似乎使用文件的open方法,these docs建议您需要
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>