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

Rus*_* F. 1 c++ windows winapi

根据MSDN,路径C:tmp.txt应该被认为是相对的,但是PathIsRelative()返回FALSE而不是TRUE.

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

Dav*_*nan 5

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

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