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;
}
相关推荐
桀人11 分钟前
C++——模板初阶(收录在专栏C++入门到精通)
开发语言·c++
一直有一个ac的梦想18 分钟前
cmu15445 2025fall lec 18 transactions with two-phase lock
java·开发语言·数据库
JAVA社区33 分钟前
Java进阶全套教程(四)—— SpringMVC框架详解
java·开发语言·spring·面试·职场和发展
Lumbrologist38 分钟前
【C++】零基础入门 · 第 2 节:变量、基本数据类型与输入输出
java·开发语言·c++
码完就睡1 小时前
C语言——动态内存
c语言·开发语言
xyq20241 小时前
Java 数组
开发语言
雨辰AI1 小时前
人大金仓 V9 生产级专用监控大盘(含 120 + 指标 + 告警规则 + 一键导入)
java·开发语言·数据库·mysql·政务
时寒的笔记1 小时前
day13~14核心案例某采招网
开发语言·javascript·ecmascript
彦为君2 小时前
Java文件处理效率库Commons-IO(速览)
java·开发语言·mfc
sycmancia2 小时前
Qt——文本打印与光标定位
开发语言·qt