下面的代码会做什么?为什么使用它?

  #ifdef _WIN32
  #include <direct.h>
  #elif defined __linux__
  #include <sys/stat.h>
  #endif

最佳答案

C 中没有可移植的方式来操作文件系统目录。您需要一些提供包装器接口(interface)的库来操作目录。 (使用系统调用、操作系统中断例程等)
direct.h 是 Windows 的 C 编程语言的头文件。它包含用于操作文件系统目录的函数声明和所需的宏、结构等。在类似 Linux 的系统中,您可以使用 sys/stat.h

现在,如果您的代码可以为任一操作系统编译,您可以保留没有任何保护的通用(可移植)代码,并在 conditional compilation 块中保留特定于 windows 或 linux 的代码。

如果有条件不包括这些文件,则在Linux中可能会出现direct.h not found或类似错误,而对于Windows可能会出现类似错误。
__linux__ 由针对 Linux 代码的编译器预定义。

This msdn 文档说:

关于c - 为什么基于 _WIN32 或 __linux__ 有条件地包含 direct.h 或 sys/stat.h?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25280440/

10-11 18:37