【发布时间】:2017-05-10 10:43:22
【问题描述】:
我在 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版本来编译的。
【问题讨论】:
-
您的编译器似乎不知道您的函数(需要声明)。你检查过你包含的内容吗?你需要这个:#include
-
感谢您的快速回复。我已经包含了这个标题。仍然出现此错误。
-
请发布一个最小的完整示例。
-
谢谢@molbdnilo。我已经更新了代码块。
-
你的编辑从哪里得到
fcntl.h?那个文件里有什么?g++ -M source.cc的输出是什么,source.cc是您的 C++ 源代码?有关-M选项的详细信息,请参阅gcc.gnu.org/onlinedocs/gcc/…。