【发布时间】:2014-06-22 01:35:12
【问题描述】:
今天我偶然发现了 MSDN 的有关 Visual C++ 的 C 运行时的文档(例如:http://msdn.microsoft.com/en-us/library/8syseb29.aspx),令我惊讶的是,许多函数看起来就像 POSIX 系统调用:dup2、fdopen、stat、@ 987654326@, ...,除了前缀为_ 或_w。这些函数只是 Windows API 的包装器吗?它们仅可用于 POSIX 子系统吗?它们是否已被弃用/将被弃用?
【问题讨论】:
-
Windows 曾经支持 3 个 api 层。 Win32、OS/2 和 Posix。 Win32 以压倒性优势获胜。 posix 函数仍然受支持,但由于它们不是 OS 或标准 C 函数,因此得到了前导下划线。您可以在 win32 程序中使用它们,它会尽力使其正常运行。不要指望奇迹,像 _stat() 这样的函数当然不会告诉你任何关于 inode 的信息。而且没有_fork(),那太陌生了。
-
这里有一个“已弃用”的 POSIX 函数列表:msdn.microsoft.com/en-us/library/ms235384.aspx(已弃用,因为它们会作为非标准 CRT/C++ 标准库函数引起弃用警告,而不是因为它们可能很快就会消失。)一些 POSIX 函数已成为 C99 或 ISO C++ 标准,并且未被弃用。
-
@ColinRobertson:但
_stat没有(或者是吗?)弃用,其语法与stat相同。我不关心 POSIX 一致性,我只是觉得类似 POSIX 的 api 更容易使用。
标签: c visual-studio winapi visual-c++