2

Win32mkdir(<name>)と下の違いはありますか。CreateDirectory(<name>, NULL)

ご覧のとおり、両方が機能しています(同じように??)

4

1 に答える 1

6

mkdir(そして推奨される_mkdirはランタイム ライブラリ関数です。CreateDirectoryは Windows に固有です。移植可能なコードが_mkdir必要な場合は、 を呼び出します。プログラムを Windows 固有のものにしても問題ない場合、またはセキュリティ記述子を追加する機能が必要な場合は、 を呼び出しますCreateDirectory

最も可能性が高いのは、_mkdirWindows 呼び出しの実装です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 に答える