我正在尝试使用MinGW编译libUnihan代码,但是遇到了需要移植的函数。该函数的目的是获得规范路径表示。它使用pwd.h
(它是POSIX,而MinGW不是),所以它可以通过检索包含{{1}的passwd
结构来解释使用'〜'来表示主目录。 }。我确实找到了一些信息here和一个pw_dir
here的端口,但我仍然完全不知道如何处理这个问题。使用MinGW,我仍然有一个由realpath
表示的主目录,位于~
,但由于它不是POSIX,我没有/home/nate
来帮助我找到这个家的位置目录是。
问:如何移植以下功能才能与MinGW一起正常使用?
pwd.h
答案 0 :(得分:5)
目的是实现~[username]/
重映射逻辑。这种代码在Linux / UNIX环境中很有意义,但最常见的用途是引用用户自己的主目录。
为方便起见,我只是添加对常见案例的支持 - ~/
- 即当前用户,而不是支持更一般的案例 - 在这种情况下失败并出现明显错误。
获取当前用户主目录的功能是SHGetFolderPath
。
#include <windows.h>
char homeDirStr[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, homeDirStr))) {
// Do something with the path
} else {
// Do something else
}
如果用户查找失败,您粘贴的代码不会尝试替换该字符串,而只是返回NULL
,因此您可以模拟它。