首页
社区
课程
招聘
[求助]请问如何设计自定义错误码?
发表于: 2010-7-11 02:48 8706

[求助]请问如何设计自定义错误码?

2010-7-11 02:48
8706
     我需要自定义上百种错误码,如果用
#define  ERROR_XXX   MAKE_ERROR(1)    // "XXX错误"
#define  ERROR_YYY    MAKE_ERROR(2)   //  "YYY错误"

这种样式定义话,当错误码极多的情况下,我如何简单的把对应的错误码直接转换成 字符串?
也就是如何设计这个从错误码转换到字符串的函数?下面这种写法当错误太多,就太难看了
const   char* ConvertToMessage(int nErrorCode)
{
         switch(nErrorCode)
        {
         case ERROR_XXX:
                 return "XXX错误";
         ..........
        }
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
将所有错误码放入一个数组中:
char *lpszErrStr[] = {"xxxx","xxxx",...};

最后就可以直接显示错误码了。
ShowErrMsg(lpszErrStr[ERROR_XXX]);
2010-7-11 08:33
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=小虾;834383]将所有错误码放入一个数组中:
char *lpszErrStr[] = {"xxxx","xxxx",...};

最后就可以直接显示错误码了。
ShowErrMsg(lpszErrStr[ERROR_XXX]);[/QUOTE]

  放在数组中的话,必须要保证数组中的错误信息与ERROR_XXX一致,当错误码太多的时候,输入需要一个一个的比对,有可能因为输入造成不一致,我记得有一种赋值法,但忘了语法了,大概像下面这种样式,请问你知道吗?

enum {
ERROR_XXX,
ERROR_YYY,
ERROR_MAX
};
const char* szErrorMessage[ERROR_MAX -1] = 
{
 
   [ERROR_YYY] = "YYY错误"
};


意思大概是这样,但写法我由于记不到了,编译不过
2010-7-11 10:06
0
雪    币: 37
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
enum {
ERROR_XXX,
ERROR_YYY,
ERROR_MAX
};里面各项实际也就是0  1 2 3 4
和数组有区别?
2010-7-11 10:11
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
1.没有区别,但在引用的时候,我如果写 1 2 3 4,这样的错误码,那就太难阅读了
2.那种数组赋值方法,如果漏写了元素的赋值,不会影响到他们本身的顺序,而一般的赋值方法如果漏写了元素,则后面的元素表达的意思就和ENUM中的就不一致了
2010-7-11 10:30
0
游客
登录 | 注册 方可回帖
返回
//