c++ - 在 Linux 和 gcc 上没有 _fdopen

标签 c++ visual-c++ g++

我调用 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/

相关文章:

visual-studio - GCC 与 Visual Studio 一起使用吗?

c++ - g++,当我不使用异常时的异常成本

c++ - gcc 一起构建对象和依赖文件

C++ 控制台保存并加载保存的 "games"

c++ - undefined reference 错误,即使在指定 -L 和 -l 标志之后

c++ - 如何使用visual studio在c中捕获全屏

c++ - 如何在 Visual C++ 中检查 vtable?

c++ - 在 C++ 结构中显示垃圾值

c++ - 删除 PCL 可视化器内定义的 3D 框外的点

c++ - 模板结构的静态常量成员的不同值