它是带有PathIsRelative函数的WinAPI Bug吗?

时间:2014-09-29 11:56:18

标签: c++ windows winapi

根据MSDNC:tmp.txt的路径应视为相对路径,但PathIsRelative()返回FALSE而不是TRUE

这是一个错误吗?或者我错了?

1 个答案:

答案 0 :(得分:5)

这取决于亲戚的意思。像C:tmp.txt这样的路径非常特别。它相对于驱动器C上的当前目录。另一方面,tmp.txt相对于进程当前目录。这可能不在驱动器C上。实际上,每个驱动器的当前目录也相当特殊,通过一些奇怪的环境变量实现,纯粹是为了保持与DOS的一些兼容性。关于这个相当神秘的主题的更多内容可以在Raymond Chen的文章中找到:Why does each drive have its own current directory?

PathIsRelative看起来与你有不同的看法,即相对路径是什么。 PathIsRelative函数不会将与指定驱动器上的工作目录相关的路径视为相对路径。因此PathIsRelative("C:tmp.txt")会返回FALSE。如果你想要一个将这种路径视为相对路径的函数,你可能需要自己编写它。手动解析路径以检测这种情况非常容易。