http://msdn.microsoft.com/en-us/library/windows/desktop/aa365740%28v=vs.85%29.aspx
cFileName
文件名。
MAX_PATH
的值与相同,与_MAX_FNAME
几乎相同,但在这种情况下使用第一个是误导性的。无论如何,如果他们的意思是名称的完整路径,那么它应该是cFileName[MAX_PATH+_MAX_FNAME];
吗?使用MAX_PATH
的目的是什么?
答案 0 :(得分:5)
MAX_PATH
常量表示整个路径的最大长度,包括文件名和扩展名。无论是相对路径,完全限定路径,还是文件名都无关紧要;它们都具有相同的最大长度。
因此,您永远不会看到MAX_PATH + _MAX_FNAME
,因为它会超过路径允许的最大长度。
你会在this article中找到你想知道的关于Win32中路径的所有内容。请注意,某些API(通常在文档中显式调用这些API)接受使用特殊前缀表示的长路径名,这些路径名不受MAX_PATH
的限制。
在这种情况下,功能签名是正确的。但有时,MSDN上的示例代码片段随文档一起提供,此示例代码的范围从风格上的好奇到完全可憎。在尝试调整您找到的示例代码时,总是值得使用良好的健康剂量的常识。
答案 1 :(得分:2)
这里没有错。在受长度限制的Windows API中,名称的最大长度(通常)为MAX_PATH
。名称是完全指定的绝对路径,相对路径还是文件名无关紧要,长度限制仍为MAX_PATH
。
底层文件系统可能有不同的限制。原始文件系统限制可能小于260是完全合理的。但是如果API声明限制为260个字符,那么这是使用该特定API时的限制。
如果您认为MSDN库不正确,则可以轻松检查。查看Windows头文件中的定义,并将其与MSDN库中给出的定义进行比较。你总会发现MSDN库是准确的。