c++头文件中#ifdef __linux和#ifdef __unix的区别
Difference between #ifdef __linux and #ifdef __unix in C++ header file
我见过一些样板头文件代码用于处理不同的操作系统,如:
#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内核中(尽管可以编译带有支持的自定义内核)。就特定的锅炉板而言,它很可能只是覆盖了所有基础,并且可以用来利用每个操作系统上可用的特定工具。
相关文章:
- 在UNIX系统中使用DIR查找文件的字节大小
- 当套接字连接断开时检测C/C++Unix
- #ifdef和未声明的标识符
- C++:floor unix时间戳到UTC月份
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- C++ Macros #ifdef
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- createFile() 和 DeviceIoControl() 等效于 Unix/Linux 中的卷设备
- 如何将 jsoncpp 库包含在 unix 上的项目中?
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 更新 #ifdef 中的现有变量值?
- 使用 constexpr 替换 #define 和 #ifdef 进行条件编译
- 如何"buffer" UNIX 信号
- 从Qt上的UNIX域套接字(QLocalSocket)读取
- 为什么对于gcc来说,"UNIX"和"unix"宏不是一回事?
- 如何设置Qt应用程序以使用类Unix系统的实际环境变量?
- 使用 #ifdef 时的多个定义
- 将带斜杠的 Unix 路径转换为 Windows 路径
- 使用 [#define & #ifdef] 跨文件激活代码块