【问题标题】:Difference between #ifdef __linux and #ifdef __unix in C++ header fileC++头文件中#ifdef __linux和#ifdef __unix的区别
【发布时间】:2015-10-03 04:09:17
【问题描述】:

我见过一些用于处理不同操作系统的样板头文件代码,如下所示:

#ifdef __WIN32
    //windows
#elif __linux
    //linux
#elif __unix
    //all unix not captured above
#endif

如果__unix 捕获所有未被__linux 捕获的unices,为什么不直接使用__unix?我假设这是某种保护措施,例如“如果 __linux 还不够,请使用它”。

但是,两者都被使用肯定是有原因的,而不是仅仅使用 __unix 的包罗万象(再一次,这个假设可能是错误的)。

怎么了?

【问题讨论】:

  • 你可以在这里找到原因OSs
  • unix和linux不一样

标签: c++ coding-style header-files preprocessor-directive


【解决方案1】:

正如 cmets 中所述,Unix 和 Linux 是两个不同的操作系统,尽管大量软件兼容,但它们具有单独的许可结构。这意味着 Linux 中可用的许多工具在 Unix 中不可用,反之亦然。这方面的一个例子是 Unix 的 ZFS 文件系统,它不能在与 Linux 相同的许可下分发,因此支持不包含在现有的 Linux 内核中(尽管可以编译支持的自定义内核)。就特定样板而言,它可能只是涵盖所有基础,可用于利用每个操作系统上可用的特定工具。

【讨论】:

    猜你喜欢
    • 2010-11-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 2021-08-29
    相关资源
    最近更新 更多