2015-10-03 35 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內核中不包含支持(儘管可以編譯一個支持自定義的內核)。就特定的鍋爐板而言,它可能只是覆蓋了所有的基礎,並可用於利用每個操作系統上可用的特定工具。