提交 acfb0624 authored 作者: 周尚's avatar 周尚

v1.0.0

上级
#include "AWError.h"
#include <stdlib.h>
#include <string.h>
__thread AW_errno AW_errnum;
struct AW_strerror
{
const char* name;
const char* desc;
};
#define AW_STRERROR_GEN(n, s) {"AW_" #n, s},
static struct AW_strerror AW_strerror_tab[] = {AW_ERRNO_MAP(AW_STRERROR_GEN)};
#undef AW_STRERROR_GEN
const char* AW_ERR_name(AW_errno errnum)
{
return AW_strerror_tab[errnum].name;
}
const char* AW_ERR_desc(AW_errno errnum)
{
if (errnum == AW_ERR_SYS)
return strerror(errno);
else
return AW_strerror_tab[errnum].desc;
}
/**
* @file AWError.h
* @date 2020-11-09
* @author whiothes <whiothes81@gmail.com>
* @version 1.0
* @brief error definitions
*/
#pragma once
#include <errno.h>
/**
* @brief error no. - error description MAP
*
* @note add your own (error macro, error description) map here
*/
#define AW_ERRNO_MAP(XX) \
/* no error */ \
XX(SUCC, "SUCCESS") \
\
/* use system errno */ \
XX(ERR_SYS, "use strerror instead") \
\
/* SQLite error */ \
XX(ERR_SQLITE, "call SQLite error API called function above for detail") \
XX(ERR_SQLITE_INVALID_METHOD, "Invalid sql method") \
\
/* Custom error */ \
XX(ERR_INVALID_MEMORY, "invalid memory address") \
XX(ERR_INVALID_TYPE, "invalid data type") \
\
/* unknown error */ \
XX(ERR_UNKNOWN, "Unexpected error occurred")
/**
* @brief Define AW_* values for each errno value above
*
* @warning DO NOT DO ANY EDIT HERE
*/
#define AW_ERRNO_GEN(n, s) AW_##n,
/**
* @brief make ERROR macro to be enum
*
* @warning DO NOT DO ANY EDIT HERE
*/
typedef enum
{
AW_FAIL = -1,
AW_ERRNO_MAP(AW_ERRNO_GEN)
} AW_errno;
#undef AW_ERRNO_GEN
const char* AW_ERR_name(AW_errno errnum);
const char* AW_ERR_desc(AW_errno errnum);
extern __thread AW_errno AW_errnum;
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论