c - 为什么我可以在 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
有意义的标头时出现错误。为什么它不能双向工作?
- 另外,为什么我可以在 Windows 上访问类似 unix 的系统的功能(在 POSIX 标准中找到)?
- 我的编译器是否有任何转换?它会自动将 POSIX 标准转换为 Windows 兼容?
解决方案
Mingw(默认的 Codeblocks 编译器)在安装的包含目录中提供了其中一些头文件。它有某种方式的 POSIX 支持,但我认为它不是 100% 兼容的。如果你想确定在 Windows 下运行 *nix/POSIX 兼容的库,你可能应该使用 Cygwin。
推荐阅读
- go - 定期运行多种方法
- javascript - Babel `import` 的 Codemod 到 commonjs `require`
- python - Python Winsound不播放WAV文件
- javascript - 如何使用 for 循环在 Javascript 中使用 Query 选择器处理节点对象
- javascript - 为什么不是 vuejs 组件上的所有 html 元素都有 data-v-??????? 属性?
- r - 如何将我的数据分成 2 个单独的组?
- flutter - Flutter:为全背景应用一个渐变
- firebase - 在 firebase 中使用 redux 更新用户个人资料信息
- ios - Xcode 10.2.1 和 iOS 12.3 测试版
- node.js - 无法访问 Docker 容器的暴露端口