【发布时间】:2016-10-18 12:10:04
【问题描述】:
我必须在 c/c++ 中包含什么文件才能使用 open() 函数? 我已经包含了 fcntl.h、stdio.h 和 Visual Studio 仍然告诉我“打开”没有定义。
【问题讨论】:
-
Visual Studio 标准库没有
open函数。虽然它确实有_open,但即使是那个也已被弃用。我真的不建议在 Windows 中使用它(或其替代品)。如果您想要可移植的文件处理,请使用 C++ 流,或者 Cfopen和朋友,如果您不关心可移植性,请使用 Windows API 函数。 -
然后是一些吹毛求疵。你真的应该花一些时间来read about how to ask good questions,并学习如何创建Minimal, Complete, and Verifiable Example。你“包括”了吗?包括什么?
-
这取决于语言。没有 C/C++ 语言,所以只有两种不同语言 C 和 C++。选择你使用的那个!
-
如果你 read the docs 你可以看到有多个覆盖,它将在 sys/types.h、sys/stat.h、fcntl.h 中。但是带有解析器/分析器的 IDE 应该准确地告诉您将使用哪个函数,从哪个标头中。
-
@JoachimPileborg
open()非常标准 - it's POSIX。 “弃用”只是微软的一部分。程序员可能想要使用较低级别的open()/[p]read()/[p]write()而不是较高级别的 C++ 流有很多原因。立即想到性能和便携性。