Ответ двоякий: есть две функции с похожими именами, wxMkdir и wxMkDir, с первое задокументировано, а второе не задокументировано. Вторая часть заключается в том, что кажущееся верным предположение, что они будут вести себя одинаково, не является верным предположением.
Недокументированная функция wxMkDir сопоставляется с wxCRT_MkDir, которая, в свою очередь, сопоставляется с wxCRT_MkDirA, а затем с wxPOSIX_IDENT(mkdir), что создает зависящее от платформы имя для упомянутой функции POSIX, mkdir. Согласно документации POSIX для mkdir
После успешного завершения mkdir() возвращает 0. В противном случае возвращается -1, каталог не создается, а errno должен указывать на ошибку.
Итак, условные выражения, такие как:
if (!wxMkDir(newDir)) {
// handle the error here
}
не получится, но:
if (wxMkDir(newDir) != 0) {
// handle the error here
}
будет работать так, как ожидалось, в зависимости от того, был ли каталог создан или нет.
Задокументированная функция wxMkdir реализована в исходном файле wx filefn.cpp и использует mkdir, но с условными выражениями, подобными приведенным выше, для сопоставления с соответствующим возвращаемым значением bool.
person
hlongmore
schedule
10.03.2016