C语言中比较优雅的错误定义

废话不多说,直接上代码

c 复制代码
#include <stdio.h>
#include <stdlib.h>

#define foreach_http_error				\
  _ (401, "401 error")					\
  _ (501, "501 error")

typedef enum
{
#define _(sym,string) HTTP_ERROR_##sym,
	foreach_http_error
#undef _
	HTTP_N_ERROR,
} http_reply_error_t;

static char *http_error_strings[] = {
#define _(sym,string) string,
	foreach_http_error
#undef _
};

const char *get_error(const int code) {
	return http_error_strings[code];
}

int main() {
	const char *err = get_error(HTTP_ERROR_401);
	printf("err string: %s\n", err);
	getchar();
	return 0;
}
相关推荐
Cx330❀4 分钟前
从零实现一个 C++ 轻量级日志系统:原理与实践
大数据·linux·运维·服务器·开发语言·c++·搜索引擎
程序leo源5 分钟前
Linux深度理解
linux·运维·服务器·c语言·c++·青少年编程·c#
AI玫瑰助手6 分钟前
Python流程控制:while循环嵌套与死循环避免技巧
开发语言·python·信息可视化
之歆21 分钟前
DAY_23 JavaScript 函数进阶:作用域 · 提升 · 匿名函数 · IIFE · 回调 · 递归 · Object 对象建模(下)
开发语言·javascript·ecmascript
csbysj202022 分钟前
jEasyUI 合并单元格
开发语言
Ulyanov24 分钟前
《从质点到位姿:基于Python与PyVista的导弹制导控制全栈仿真》: 同台竞技——3-DOF与6-DOF模型的终极对决与误差分析
开发语言·python·算法·系统仿真·雷达电子对抗仿真
Severus_black24 分钟前
【初阶数据结构】链式二叉树(BinaryTreeNode)与递归
c语言·数据结构·链表
CHANG_THE_WORLD25 分钟前
二次重命名对文件批量重命名
开发语言·python
Hesionberger25 分钟前
LeetCode98:验证二叉搜索树(多解)
java·开发语言·python·算法·leetcode·职场和发展
故事还在继续吗28 分钟前
嵌入式 C 语言程序性能优化
c语言·开发语言·性能优化