下面的代码会做什么?为什么使用它?
#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/