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.
看一下fopenCRT源代码的实现,你可以看到(最终它是一个内部帮助函数的调用堆栈),fopen最终调用(不出意料地)CreateFileWin32 API.然后仔细地将可能返回的错误映射CreateFile到类似errno的错误(使用内部_dosmaperr()函数,如果您仍想跟随CRT源).这既映射ERROR_FILE_NOT_FOUND,并ERROR_PATH_NOT_FOUND在错误号ENOENT.
因此,fopen在区分的背景下最好被认为是无意义的,因为它是一个实现细节fopen.
| 归档时间: |
|
| 查看次数: |
5389 次 |
| 最近记录: |