我给fdopen打电话。在Windows上,使用VisualC++ 2010,当我调用它时,会收到一条警告:
警告1警告C4996:'fdopen':不推荐此项的POSIX名称。相反,使用符合C++的名称:_fdopen。
在Linux上(g++ 4.8.2),它可以工作。
当我切换到_fdopen时,VisualC++不再抱怨,但是g++找不到它。由于g++确实找到了fdopen,我不认为这是here描述的问题。无论如何,我没有指定-std=c++11。
我应该使用_fdopen吗?我应该使用fdopen而忽略警告吗?
发布于 2015-05-04 08:40:27
fdopen不是C++标准的一部分,而是C++标准的一部分。虽然几乎每个C++编译器维护人员都希望达到C++标准,但对于是否支持POSIX以及如何支持POSIX,几乎没有什么共识。
本质上,fdopen属于任何一个完全特定于平台的功能的范畴;它只是在不同的系统上不同而已。如果警告对您有影响,您可以使用一些预处理程序在Windows中使用代码的一部分,在Linux中使用另一部分代码,例如。在你自己的fdopen包装里。
关于_fdopen是符合ISO C++的信息: C++标准提供了一些类似于_的东西,一开始是编译器特定的。所以是的,在这一点上它是一致的。
https://stackoverflow.com/questions/30025721
复制相似问题