2015-10-03 34 views
1

我已经看到了一些样板头文件中的代码与不同的操作系统打交道,像下面这样:差异的#ifdef __linux #ifdef和__unix在C++头文件

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

如果__unix捕获所有的Unix系统没有捕获__linux,为什么不只是使用__unix?我假设它是某种保护措施,例如“如果__linux还不够,请使用此功能”。

但是,这两者都有使用的必然原因,而不是仅仅通过__unix(再一次,这种假设可能是错误的)。

这是怎么回事?

+0

你可以在这里找到[OS]的原因(http://sourceforge.net/p/predef/wiki/OperatingSystems/) –

+0

unix与linux不一样 – Galik

回答

0

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