Linux 和 gcc 上没有 _fdopen
No _fdopen on Linux and gcc
我正在打电话 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++ 标准说,开头带有 _
的所有内容都是特定于编译器的。所以是的,在这一点上它是一致的。
我正在打电话 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++ 标准说,开头带有 _
的所有内容都是特定于编译器的。所以是的,在这一点上它是一致的。