我试图在windows下编译一个linux编写的程序(我使用mingw)
void make_directory(const char* name) {
mkdir(name1, name2);
}
Run Code Online (Sandbox Code Playgroud)
有一个错误:
Too Many Arguments to function 'int mkdir(const char*)'
Run Code Online (Sandbox Code Playgroud)
有什么想法解决这个问题?
正如评论中所说,mkdir()只需要一个论点.但是,由于此函数已弃用,您应该使用 _mkdir():
int _mkdir(const char *dirname);
int _wmkdir(const wchar_t *dirname); /* for wide-character */
Run Code Online (Sandbox Code Playgroud)
如果你想在两个系统上使用你的功能(linux/mingw):
void make_directory(const char* name)
{
#ifdef __linux__
mkdir(name, 777); /* Or what parameter you need here ... */
#else
_mkdir(name);
#endif
}
Run Code Online (Sandbox Code Playgroud)
编辑:
MinGW实施:
_mkdir():
_CRTIMP int __cdecl __MINGW_NOTHROW _mkdir (const char*);
Run Code Online (Sandbox Code Playgroud)
MKDIR():
_CRTIMP int __cdecl __MINGW_NOTHROW mkdir (const char*);
Run Code Online (Sandbox Code Playgroud)
两者都是指定的io.h,但我想更好地包括direct.h(包括io.h在其中).
我设法逃脱了这个,为mingw-w64下的Linux编写的程序构建:
#if (defined(_WIN32) || defined(__WIN32__))
#define mkdir(A, B) mkdir(A)
#endif
Run Code Online (Sandbox Code Playgroud)