跨平台创build文件夹/目录的方法?

有没有办法创build一个文件夹/目录“在代码中”使用C,这是跨平台? 或者我将不得不使用预处理器来说明使用哪种方法?

你需要一个#define来做到这一点。

为了让你的代码看起来干净整洁,你需要使用一个定义Linux函数的函数来编译Windows时转换成相应的Windows函数。

在源文件的顶部,您将在Windows特定部分中找到它:

 #include <windows.h> #define mkdir(dir, mode) _mkdir(dir) 

然后,你可以调用这个函数:

 mkdir("/tmp/mydir", 0755); 

以下是一些可能有用的其他内容:

 #define open(name, ...) _open(name, __VA_ARGS__) #define read(fd, buf, count) _read(fd, buf, count) #define close(fd) _close(fd) #define write(fd, buf, count) _write(fd, buf, count) #define dup2(fd1, fd2) _dup2(fd1, fd2) #define unlink(file) _unlink(file) #define rmdir(dir) _rmdir(dir) #define getpid() _getpid() #define usleep(t) Sleep((t)/1000) #define sleep(t) Sleep((t)*1000) 

有没有办法创建一个文件夹/目录“在代码中”使用C,这是跨平台?

不.C语言和标准库完全没有目录的概念。 有标准的库函数,特别是fopen() ,它使用文件名,这个概念包含了路径(因此也包括目录),但是标准指定 :

打开附加(非临时)文件的函数需要一个文件名,这是一个字符串。 组成有效文件名的规则是实现定义的

(C2011 7.21.3 / 8;强调加)

我知道这个问题并不直接说明问题,但很难证明是否定的,尤其是要简明扼要。 我强调的一点是,语言标准甚至不知道目录的存在,在确保你没有特别的支持创建它们之前。

或者我将不得不使用预处理器来说明使用哪种方法?

这将是一个传统的方式来进行。 有几种方法可以实现细节。