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;
}
相关推荐
小鹿软件办公7 小时前
倒计时开启:Chromium 宣布几周内将全面切断 MV2 扩展支持
开发语言·javascript·ublock origin
codecrafter1237 小时前
sh:在 Python 里直接调系统命令
开发语言·python·其他
Luminous.7 小时前
C语言--day29
c语言·开发语言
逢君学术论文AI写作7 小时前
Java第24课:会话技术CookieSession
java·开发语言
小小编程路7 小时前
字符串转数字时,可能会遇到哪些问题?
java·开发语言·算法
许彰午7 小时前
责任链模式实战——同一个框架里的两种链
java·开发语言·责任链模式
寻道码路7 小时前
LangChain4j Java AI 应用开发实战(十四):手写 RAG 全流程 - 深入理解每个环节
java·开发语言·人工智能·ai
吴阿福|一人公司7 小时前
Python 类变量修改的压力测试:高并发场景
开发语言·python
十月的皮皮7 小时前
C语言学习笔记20260612-菱形图案打印(两种写法)
c语言·笔记·学习
天天进步20157 小时前
Tunnelto 源码解析 #13:自托管部署:Docker、环境变量、端口规划与单实例限制
开发语言