sas*_*alm 1 c++ winapi windowserror
ERROR_FILE_NOT_FOUND
当我尝试打开一个不存在的文件时,我通常会得到,但现在fopen失败了ERROR_PATH_NOT_FOUND
.
那么ERROR_FILE_NOT_FOUND
和之间的区别是什么ERROR_PATH_NOT_FOUND
?
在WinError.h
,ERROR_FILE_NOT_FOUND
有描述性文本"系统找不到指定的文件".并ERROR_PATH_NOT_FOUND
具有描述性文本"系统无法找到指定的路径".
这并没有特别澄清问题.
然而,通常,"未找到文件"是指无法找到文件本身并且"未找到路径"指的是无法找到路径的组件(指定的目录名称之一)的情况.
实际上,规范含义可以从错误代码的名称中推断出来.
在特定的意义,因为它是所有的"通用"的错误代码,在很大程度上取决于所表示功能的实现"生产"这个错误.对于这方面更糟糕的例子,考虑错误ERROR_INVALID_DATA
- 只有函数的文档可以告诉它应该是什么.
这使我们达到fopen
甚至(正式)返回或设置这些错误代码的程度.fopen
是CRT库的一部分,因此记录使用其错误报告机制:errno
.
看一下fopen
CRT源代码的实现,你可以看到(最终它是一个内部帮助函数的调用堆栈),fopen
最终调用(不出意料地)CreateFile
Win32 API.然后仔细地将可能返回的错误映射CreateFile
到类似errno的错误(使用内部_dosmaperr()
函数,如果您仍想跟随CRT源).这既映射ERROR_FILE_NOT_FOUND
,并ERROR_PATH_NOT_FOUND
在错误号ENOENT
.
因此,fopen
在区分的背景下最好被认为是无意义的,因为它是一个实现细节fopen
.
归档时间: |
|
查看次数: |
5389 次 |
最近记录: |