2

mkdir(<name>)Win32和CreateDirectory(<name>, NULL)Win32下有区别吗?

如我所见,两者都在工作(以相同的方式??)

4

1 回答 1

6

mkdir(并且推荐的_mkdir是运行时库函数。CreateDirectory特定于 Windows。如果您想要可移植代码,请调用_mkdir。如果您可以使程序特定于 Windows,或者您需要能够添加安全描述符,请CreateDirectory调用

最有可能的是_mkdir,Windows 调用的实现CreateDirectory(name, NULL)。所以两者最终都做同样的事情。

编辑:_mkdir() 的 Visual Studio 12 实现调用 _wmkdir(),然后调用 CreateDirectoryW:

int __cdecl _wmkdir (
        const wchar_t *path
        )
{
        ULONG dosretval;

        /* ask OS to create directory */

        if (!CreateDirectoryW(path, (LPSECURITY_ATTRIBUTES)NULL))
            dosretval = GetLastError();
        else
            dosretval = 0;

        if (dosretval) {
            /* error occured -- map error code and return */
            _dosmaperr(dosretval);
            return -1;
        }

        return 0;
}
于 2014-06-13T15:39:42.767 回答