有没有办法创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;强调加)
我知道这个问题并不直接说明问题,但很难证明是否定的,尤其是要简明扼要。 我强调的一点是,语言标准甚至不知道目录的存在,在确保你没有特别的支持创建它们之前。
或者我将不得不使用预处理器来说明使用哪种方法?
这将是一个传统的方式来进行。 有几种方法可以实现细节。