我有一个函数,可以返回每种情况下的不同dword值。因此,我有以下定义:

#define ERR_NO_DB_CONNECTION    0x90000
#define ERR_DB_NOT_OPEN         0x90001
#define ERR_DB_LOCKED           0x90002
#define ERR_DB_CONN_LOST        0x90003

现在,我在发生错误时返回这些值。我还需要在同一退货中返回getlastror的值。

不,我稍后再也看不懂。

我尝试结合不同的方式,例如:

return ERR_DB_NOT_OPEN + GetLastError();

然后通过减去ERR_DB_NOT_OPEN的值来提取错误,但是由于我需要在函数中使用它,在这些函数中可以有几个返回值,因此可以很复杂。

有什么方法可以实现这一目标吗?我的意思是,将值 + getlasterror结合在一起,然后提取它们?代码表示赞赏。

谢谢

杰西。

有帮助吗?

解决方案

根据 微软的文档, ,系统错误代码最大为15999(0x3e7f)。这意味着您有整个上词可以玩。您需要缩短错误代码以适合4个十六进制数字,然后您可以使用一些Windows宏将它们组合并拆分:

return MAKELPARAM(GetLastError(), ERR_DB_NOT_OPEN);

int lasterror = LOWORD(result);
int code = HIWORD(result);

其他提示

我知道这篇文章很旧,但以防万一...补充马克的答案。以下代码区域可供您定义自己的错误。

错误代码为32位值(位31是最重要的位)。位29保留用于应用程序定义的错误代码;没有系统错误代码具有此位设置。如果要为应用程序定义错误代码,请设置此位,以指示错误代码已由您的应用程序定义,并确保您的错误代码不会与任何系统定义的错误代码冲突。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms680627%28v=vs.85%29.aspx

您可以将它们组合到字符串(char数组)中,然后将它们与呼叫者分开。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top