有关_doserrno(MSVC)的详细信息非常需要

时间:2018-01-27 13:42:37

标签: c++ c visual-c++ msdn

我发现有关MSVC的 _doserrno 全局变量的文档非常“稀疏&#34”,可以这么说。它的存在在 errno 的文档中提到,它是错误代码的标准C全局变量。同时 _doserrno 似乎是MSVC扩展程序。该文档提到可能提供有关I / O错误的其他信息,但它也说大多数函数设置它。

的功能是什么?似乎没有这个列表,或者我错过了什么?在单个函数的文档中,我也看到任何提及,如"此函数[not]设置_doserrno"。那我怎么知道一个函数是否设置了它?非常困惑,不是吗?

此外,文档没有说明如何解释 _doserrno 的值。从我自己的测试中可以看出,它只是从Win32 API传递到C API的Win32错误代码。但情况总是这样吗?以及如何将_doserrno转换为字符串?

(我知道我可以直接从Win32 API使用FormatMessage()从Win32错误代码中获取字符串。但是恢复到Win32 API完全违背了在C API中使用_doserrno的假设!)

的问候,
MULDER

1 个答案:

答案 0 :(得分:0)

我认为做你想做的事是不可能的。

如果你想坚持IO的可移植C函数,你将无法得到合理的错误代码或消息:C和C ++标准库都没有公开这些东西。

如果您想在Windows上获得良好的错误消息,则必须使用Win32 API而不是便携式C函数。顺便说一句,上面有好的OO包装,例如,请参阅CAtlFile了解文件。