以下代码将做什么?为什么用它?
#ifdef _WIN32 #include <direct.h> #elif defined __linux__ #include <sys/stat.h> #endif
C中没有可移植的方式来操作文件系统目录.您需要一些提供包装器接口来操作目录的库. (使用系统调用,OS中断例程等)
direct.h是Windows的C编程语言的头文件.它包含函数声明和用于操作文件系统目录的必需宏,struct等.在类似Linux的系统中,您可以使用sys / stat.h.
现在,如果您的代码可能是为任何一个操作系统编译的,那么您可以保留公共(可移植)代码而不需要任何保护,并在conditional compilation块中保留特定于Windows或Linux的代码.
如果您没有有条件地包含这些文件,您可能会在Linux中找不到direct.h或类似的错误以及Windows的任何类似错误.
__linux__是由针对Linux代码的编译器预定义的.
This msdn文件说:
_WIN32: Defined for applications for Win32 and Win64. Always defined.