我调用 fdopen
.在 Windows 上,使用 Visual C++ 2010,当我调用它时,我收到一条警告
Warning 1 warning C4996: 'fdopen': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _fdopen.
在 Linux (g++ 4.8.2) 上它可以工作。
当我切换到 _fdopen
时,Visual C++ 停止提示,但 g++ 找不到它。由于 g++ 确实找到了 fdopen
,我认为这不是描述的问题 here .无论如何,我没有指定 -std=c++11
。
我应该使用 _fdopen
吗?我应该使用 fdopen
并忽略警告吗?
最佳答案
fdopen
不是 C++ 标准的一部分,而是 POSIX。虽然几乎每个 C++ 编译器维护者都希望满足 C++ 标准,但对于是否支持 POSIX 以及如何支持,几乎没有达成共识。
本质上,fdopen
与任何完全特定于平台的函数属于同一类别;它只是在不同的系统上有所不同。如果警告让您感到厌烦,您可以使用一些预处理器的东西在 Windows 中使用一部分代码,在 Linux 中使用另一部分代码,例如。在你自己的 fdopen-wrapper 中。
关于 _fdopen
符合 ISO C++ 标准的消息:C++ 标准表示,开头带有 _
的所有内容都是特定于编译器的。所以是的,在这一点上它是符合标准的。
关于c++ - 在 Linux 和 gcc 上没有 _fdopen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30025721/