ERROR_PATH_NOT_FOUND与ERROR_FILE_NOT_FUND有什么区别
ERROR_PATH_NOT_FOUND vs ERROR_FILE_NOT_FOUND, what is the difference?
当我试图打开一个不存在的文件时,通常会得到ERROR_FILE_NOT_FOUND
,但现在fopen()
失败,GetLastError()
返回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
。
查看CRT源代码中fopen
的实现,您可以看到(最终,它相当于内部助手函数的调用堆栈),fopen
最终调用(并不奇怪)CreateFile
Win32 API。然后,它会小心地将CreateFile
可能返回的错误映射为类似errno的错误(如果您仍然想在CRT源中使用内部_dosmaperr()
函数)。这会将ERROR_FILE_NOT_FOUND
和ERROR_PATH_NOT_FOUND
都映射到错误号ENOENT
。
因此,在fopen
的上下文中,该区别最好被认为是无意义的,因为它是fopen
的实现细节。
ERROR_PATH_NOT_FOUND
表示容器目录不存在。ERROR_FILE_NOT_FOUND
表示容器目录存在,并且不包含命名文件。
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 由于"error C4430: missing type specifier - int assumed. Note: C++ does not support default-int",我现在无法编
- 当我编译XG-Bosst时,出现错误"error: 'Split' is not a member of 'xgboost::common' ……"
- "OpenCV Error: The function/feature is not implemented"安卓应用程序
- C++ GLSL 着色器:"error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES,
- "error: subscripted value is not an array, pointer, or vector",我正在使用字符串
- 为什么我"error: expression is not assignable"组合增量运算符
- 修复第三方代码:"error: ‘enable_if’ in namespace ‘std’ does not name a template type"
- 我正在接受"Error: string was not declared in this scope"
- C++编译错误,"malloc: *** error for object: pointer being freed was not allocated"
- C++ 我一直在"was not declared in this scope error"
- 如何修复OSX中的"fatal error: 'sys/epoll.h' file not found"?
- 升级到Xcode 10.1后如何修复"fatal error: 'iostream' file not found"
- 类定义内部"error: 'a' does not name a type"
- 不知道为什么我会得到"error: does not name a type "
- 编译 CPP 应用程序时出错。 "error: 'posix_memalign' was not declared in this scope"
- 解析 csv 文件,"malloc: *** error for object 0x7ffeeb4f4b80: pointer being freed was not allocated"出现此错误
- "Configure: Error: Could Not Find a Working Compiler, See config.log For Details"
- "error: not declared in this scope?"是什么意思