【发布时间】:2013-12-02 03:19:08
【问题描述】:
我对@987654323@ 和errno 之间的确切关系感到困惑。它们是相同的数值,还是完全不同的东西?我怎么知道我应该检查哪一项?
如果我想将错误代码转换为字符串进行调试,我可以将FormatMessageA() 与strerror_s() 互换使用吗?
最后,WSAGetLastError() 是否总是返回与 GetLastError() 相同的值,还是它们都返回不同的值?
【问题讨论】:
-
GetLastError和FormatMessage用于 Win32 错误。errno和strerror用于 C 运行时错误。他们是无关的。每个函数都记录了它设置的错误代码。 -
@RaymondChen 但套接字错误不是 c-runtime。无论如何,我在我的程序中成功地使用了
errnorelated 函数。这是否意味着在 Windows 上perror()和strerror()与 Win32 API 不同?这是一个非常有趣的问题:我现在正在从 GNU/Linux 移植一个小应用程序,如果strerror()突然拒绝打印网络错误,那就不好了。 -
@nodakai 我知道,我不是这个意思。我想知道是否可以使用 errno 来获取至少一个套接字错误。但现在我已经知道,那不是。 Tbh 我不知道为什么有人可以在 Windows 中使用
errno。原则上我会遇到什么样的错误?在 *nix 中,我几乎可以通过errno获得所有内容,但 Windows 似乎根本没有使用它。虽然是标准。这很可悲。
标签: c windows errno getlasterror