您的位置:首页 > 其它

MFC 中_MAX_PATH的理解

2015-07-27 17:01 204 查看
疑问1,在stdlib.h中有如下定义

#define _MAX_PATH 260

#define _MAX_FNAME 256

#define _MAX_EXT 256

#define _MAX_DRIVE 3

#define _MAX_DIR 256

但是很多程序中用的都是MAX_APTH,即没有前面的下划线,怎么解释?

疑问2,

Windows系统中路径名总长度真的就不会超过260吗?这是否实际上限定了文件夹的深度呢?

问题1:在vc等环境中MAX_PATH等也被宏定义了

问题2:确切的说MAX_PATH只是一个建议值,在许多文件名相关的api中,需要提供给api一个缓冲让系统填入文件名,这时MAX_PATH都是一个好的建议值,不过这些api中都会还有有除缓冲之外的另一个参数,这就是缓冲大小.so feel free to use a buffer that is larger.The designers of windows are not so foolish::)

_MAX_PATH是NTFS所支持的最长的文件名的长度,MAX_PATH是FAT文件系统所支持的最长文件名的长度。但为了通用,一般用MAX_PATH.

对于问题2:

其路径长度有可能超过260,按如下方法

新建目录a,进入目录a,在目录a下建一个文件,其文件名长度,直到不能输入为止。反加上一级目录,将a的目录名修改为很长(可以成功,这应该是Windows系统的bug),这样上面说的那个文件的路径长度已经超过260了,但操作系统也无法打开它了。

是限制了文件夹的深度。

楼上说的不太准确 一些API的 包括CreateFile的Unicode版本就支持长达32767字节的文件名 但需要加上前缀"\\?\"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: