MFC 中_MAX_PATH的理解

疑问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字节的文件名 但需要加上前缀"\\?\"

你可能感兴趣的:(C/C++)