C ++头文件中#ifdef __linux和#ifdef __unix之间的区别

时间:2015-10-03 04:09:18

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

我已经看到了一些用于处理不同操作系统的样板头文件代码,如下所示:

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

如果__unix抓取了__linux未捕获的所有遗骸,为什么不使用__unix?我假设它是某种安全措施,例如“如果__linux还不够,请使用此”。

但是,必须使用两种方法,而不是只使用__unix(再一次,这个假设可能是错误的)。

这是什么交易?

1 个答案:

答案 0 :(得分:0)

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