【问题标题】:POSIX C wrapper for win32, linux, mac用于 win32、linux、mac 的 POSIX C 包装器
【发布时间】:2020-02-23 10:40:10
【问题描述】:

有人可以为 POSIX 函数推荐一个轻量级的 C 库/头文件包装器,可以跨平台使用吗?

例如,它可以像映射openclose 一样简单,它们在win32 中是_open_close。然后有一些功能略有不同。我知道common c++boostposixcpp,但它们对于需求来说太过分了。

我正在考虑自己编写它,但只是检查是否有人已经这样做了,而不是重新发明轮子。

【问题讨论】:

  • Posix 是跨平台的。问题是Windows。 Microsoft 在某些版本的操作系统中支持将 Posix 作为可选子系统,并在其他版本的操作系统中停止支持 Poxis。
  • 我希望在 Windows 上 open()close() 分别映射到 _open()_close()。而不是相反。
  • 如果使用 Windows,只针对 WSL。
  • @Shawn 仅当您仅针对使用 WSL 的开发人员(这只是整体的一小部分)时才有可能。 \@yumoji C 还是 C++?他们非常不同。在 C++17 中,只需使用 std::filesystem 来实现可移植性
  • 为需要而矫枉过正?你的意思是?只需使用您需要的部分...可移植性不是一个简单的问题,例如替换标识符,也不是创建简单的存根...如果您使用 C,那么 C I/O 是可移植的(fopen/fclose)。如果您需要 POSIX 功能(打开/关闭),那么您需要在主机上有一个 posix 子系统。

标签: c++ c linux windows posix


【解决方案1】:

如果只有一两个函数,可以在编译时检测窗口:How do I check OS with a preprocessor directive?

例如,如果您正在为 windows 编译,您可以测试 windows,并创建一个将 open 映射到 _open 的宏。

#if defined(_WIN32)
#define open _open
#endif

【讨论】:

    猜你喜欢
    • 2021-05-04
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2011-06-13
    • 2011-08-09
    相关资源
    最近更新 更多