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;
}
相关推荐
左左右右左右摇晃5 小时前
手写Tomcat原理整理
java·开发语言·笔记·tomcat
孫治AllenSun5 小时前
【JVM】四大引用类型分析
java·开发语言·jvm
看-是灰机5 小时前
使用go语言实现对接
linux·开发语言·后端·docker·语言模型·golang·飞书
草莓熊Lotso5 小时前
【Linux网络】深入理解Linux IO多路复用:从本质到select服务器实战
linux·运维·服务器·c语言·网络·数据库·c++
人间凡尔赛15 小时前
Next.js 16 生产级实战:Cache Components + View Transitions 完整指南
开发语言·javascript·ecmascript
稚南城才子,乌衣巷风流18 小时前
函数:编程中的核心概念
开发语言·前端·javascript
阿米亚波18 小时前
【C++】流式数据输入处理(不完全整理)
开发语言·c++·笔记
大模型码小白19 小时前
JAVA 集合框架进阶:List 与 Set 的深度解析与实战
java·开发语言·人工智能·windows·语言模型·list·ai编程
皓月斯语20 小时前
【C++基础】三目运算符
开发语言·数据结构·c++
初願致夕霞20 小时前
C++懒汉单例设计详解
服务器·开发语言·c++