har*_*per 12
由于C++不允许从枚举值到枚举名称或类似名称进行自动"转换",因此您需要一个函数来执行此操作.由于您的错误代码未在O/S中以某种方式定义,因此您需要自行翻译.
一种方法是大转换声明.另一种是表搜索或表查找.什么是最好的取决于错误代码集.
表搜索可以这种方式定义:
struct {
int value;
const char* name;
} error_codes[] = {
{ ERR_OK, "ERR_OK" },
{ ERR_RT_OUT_OF_MEMORY, "ERR_RT_OUT_OF_MEMORY" },
{ 0, 0 }
};
const char* err2msg(int code)
{
for (int i = 0; error_codes[i].name; ++i)
if (error_codes[i].value == code)
return error_codes[i].name;
return "unknown";
}
Run Code Online (Sandbox Code Playgroud)