gpt4 book ai didi

c++ - 急需 _doserrno (MSVC) 的详细信息

转载 作者:行者123 更新时间:2023-11-30 16:36:28 24 4
gpt4 key购买 nike

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

但是什么函数设置它呢?好像没有这个列表,还是我错过了什么?在各个函数的文档中,我也没有看到任何提及,例如“此函数[未]设置_doserrno”。那么我如何知道一个函数是否设置了它呢?很困惑,不是吗?

此外,文档没有提及 _doserrno 的值如何变化。 必须进行解释。如果从我自己的测试来看,这只是从 Win32 API 传递到 C API 的 Win32 错误代码。但情况总是如此吗?以及如何转换_doserrno串起来?

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

问候,
穆尔德

最佳答案

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

如果您想坚持使用可移植的 C 函数进行 IO,您将不会收到合理的错误代码或消息:C 或 C++ 标准库都不会公开这些内容。

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

关于c++ - 急需 _doserrno (MSVC) 的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48476407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com