概述
#ifndef __ERR_DEFS_H__
#define __ERR_DEFS_H__
/*
* err_code.h
*
* This is a PUBLIC header file. It defines error codes returned by
* apis.
*/
#define ERROR_MAP(XX)
XX(OK , "正常返回")
XX(ERR_SYS_UNINTIALIZED , "未初始化")
XX(ERR_SYS_ALRDY_INTIALIZED , "已经初始化")
XX(ERR_INVALID_PARAMS , "无效参数")
XX(ERR__NULL_PTR , "空指针")
XX(ERR__MALLOC_FAIL , "malloc失败")
XX(ERR_MUTEX_CREATE_FAIL , "创建信号量失败")
XX(ERR_MUTEX_TAKE_FAIL , "申请信号量失败")
XX(ERR_MUTEX_GIVE_FAIL , "释放信号量失败")
XX(ERR_INVALID_OP , "无效操作")
#define W_ERROR_EOF (0xff)
typedef enum __error_type_t
{
#define XX(name,_) name,
ERROR_MAP(XX)
#undef XX
W_ERROR_MAX = W_ERROR_EOF-1
}ERROR_TYPE_T;
#define ERROR_NAME_GEN(name, _) case name: return #name;
const CHAR_T* error_getName(INT32_T err) {
switch (err) {
ERROR_MAP(ERROR_NAME_GEN)
default:
return NULL;
}
}
#undef ERROR_NAME_GEN
#define ERROR_INFO_GEN(name, info) case name: return info;
const CHAR_T* error_getInfo(INT32_T err) {
switch (err) {
ERROR_MAP(ERROR_INFO_GEN)
default:
return "未知信息";
}
}
#undef ERROR_INFO_GEN
#define ERROR_PRINT_GEN(name,info) printf("value:%d, name:%s, info:%sn",name,#name,info);
VOID error_print()
{
ERROR_MAP(ERROR_PRINT_GEN)
}
#undef ERROR_PRINT_GEN
static UCHAR_T* error_table[]=
{
#define XX(_,info) info,
ERROR_MAP(XX)
#undef XX
"未知信息"
};
#define ERROR_MSG(MSG) error_table[MSG]
#if 0
INT32_T main()
{
printf("value:%d, name:%s, info:%sn",
ERR_INVALID_OP,
error_getName(ERR_INVALID_OP),
error_getInfo(ERR_INVALID_OP);
error_print();
printf(ERROR_MSG(ERR_INVALID_OP));
return 0;
}
#endif
#endif
转载于:https://my.oschina.net/iamancoder/blog/652011
最后
以上就是昏睡毛豆为你收集整理的一个非常有技巧的错误码定义头文件,可以拿去直接用的全部内容,希望文章能够帮你解决一个非常有技巧的错误码定义头文件,可以拿去直接用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复