首页 > 解决方案 > 为什么我可以在 windows 中访问 unistd.h?

问题描述

我在 Windows 平台上运行 Codeblocks。在研究 CI 中的 POSIX 超集标准时,遇到了一些不兼容问题。我确实了解 POSIX 标准旨在用于类似 unix 的系统,而在 Windows 上我应该搜索等价物。

我遇到的问题是例如(来自维基百科)

在 C 和 C++ 编程语言中,unistd.h 是提供对 POSIX 操作系统 API 的访问的头文件的名称。它由 POSIX.1 标准(单一 Unix 规范的基础)定义,因此应可在任何符合 POSIX 的操作系统中使用并编译

但是当我包含unistd.h在我的 IDE 中时,我没有收到任何错误。当然,我错过了一些定义,但对我来说令人惊讶的是它有效。包含库时,我期待一个错误。例如,在使用相同编译器运行相同 IDE 的 ubuntu 上,包含Windows.h有意义的标头时出现错误。为什么它不能双向工作?

标签: cwindowsposix

解决方案


Mingw(默认的 Codeblocks 编译器)在安装的包含目录中提供了其中一些头文件。它有某种方式的 POSIX 支持,但我认为它不是 100% 兼容的。如果你想确定在 Windows 下运行 *nix/POSIX 兼容的库,你可能应该使用 Cygwin。


推荐阅读