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;
}
相关推荐
♛识尔如昼♛19 分钟前
C 进阶(9) - 信号
c语言·信号
有点。25 分钟前
C++(枚举法一练习题)
开发语言·c++·算法
Klong.k32 分钟前
如何避免Bean的线程安全问题
java·开发语言
接着奏乐接着舞41 分钟前
【无标题】
开发语言·前端·javascript
iiiiyu42 分钟前
集合进阶(Map集合)
java·大数据·开发语言·数据结构·编程语言
月落归舟1 小时前
并发编程之volatile深度解析(二)
java·开发语言·volatile
来恩10031 小时前
Java Web三大作用域对象
java·开发语言·前端
ゆづき2 小时前
Java 初学者入门指南:常见问题 + 核心知识点 + 进阶 20 道练习题
java·开发语言·学习·算法·水题