c++头文件中#ifdef __linux和#ifdef __unix的区别

Difference between #ifdef __linux and #ifdef __unix in C++ header file

本文关键字:#ifdef unix 区别 c++ 文件 linux      更新时间:2023-10-16

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

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

如果__unix捕获__linux未捕获的所有单元,为什么不直接使用__unix ?我假设这是某种保护措施,就像"如果__linux不够,使用这个"。

然而,必须有一些原因两者都使用,而不是仅仅使用__unix(同样,这个假设可能是错误的)。

怎么回事?

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