C 创建文件夹/目录的跨平台方法?
有没有一种方法可以使用C“在代码中”创建一个跨平台的文件夹/目录?或者我必须使用预处理器来说明使用哪种方法?您需要一个C 创建文件夹/目录的跨平台方法?,c,linux,windows,macos,cross-platform,C,Linux,Windows,Macos,Cross Platform,有没有一种方法可以使用C“在代码中”创建一个跨平台的文件夹/目录?或者我必须使用预处理器来说明使用哪种方法?您需要一个#define来执行此操作 为了保持代码的整洁,您需要使用一个定义Linux函数的函数,以便在编译Windows时将其转换为等效的Windows函数 在源文件的顶部,您将在特定于Windows的部分中看到: #include <windows.h> #define mkdir(dir, mode) _mkdir(dir) 以下是一些可能有用的其他方法: #defi
#define
来执行此操作
为了保持代码的整洁,您需要使用一个定义Linux函数的函数,以便在编译Windows时将其转换为等效的Windows函数
在源文件的顶部,您将在特定于Windows的部分中看到:
#include <windows.h>
#define mkdir(dir, mode) _mkdir(dir)
以下是一些可能有用的其他方法:
#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;增加强调)
我知道这并不能直接说明问题,但很难证明是否定的,尤其是要简明扼要地证明。我要强调的是,语言标准甚至不知道目录的存在,在向您保证它不支持创建目录之前
或者我必须使用预处理器来说明使用哪种方法
这将是一种传统的处理方式。有几种方法可以实现这些细节。使用命令
mkdir
创建新目录。因此,我们可以使用它以(大部分)跨平台的方式创建目录
#include <stdlib.h>
//so we can use system()
\u mkdir(“./newfolder”)
可能在windows上工作,但在windows上不工作linux@Stan可以我知道linux有mkdir(“./directory”,0700)
。我需要什么标题才能使用windows等效文件?请看@dbush-answer。我说的是\u mkdir
,不是mkdir
。有一点不同:)@Stan我知道,我只是说知道它的存在:)
#include <stdlib.h>
//so we can use system()
system("mkdir my_dir");