我是靠谱客的博主 昏睡毛豆,最近开发中收集的这篇文章主要介绍一个非常有技巧的错误码定义头文件,可以拿去直接用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#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

最后

以上就是昏睡毛豆为你收集整理的一个非常有技巧的错误码定义头文件,可以拿去直接用的全部内容,希望文章能够帮你解决一个非常有技巧的错误码定义头文件,可以拿去直接用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部