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;
}
相关推荐
小CC吃豆子1 分钟前
Java数据结构与算法
java·开发语言
晨旭缘2 分钟前
后端日常启动及常用命令(Java)
java·开发语言
星辰_mya10 分钟前
RockerMQ之commitlog与consumequeue
java·开发语言
꧁Q༒ོγ꧂11 分钟前
C++ 入门完全指南(六)--指针与动态内存
开发语言·c++
梁山1号11 分钟前
【关于CAN】
c语言·stm32·单片机
IT=>小脑虎14 分钟前
2026版 Go语言零基础衔接进阶知识点【详解版】
开发语言·后端·golang
ChangYan.15 分钟前
ffi-napi运行失败,报错:No native build was found,解决办法
开发语言
专注VB编程开发20年15 分钟前
压栈顺序是反向(从右往左)的,但正因为是反向压栈,所以第一个参数反而离栈顶(ESP)最近。
java·开发语言·算法
VekiSon16 分钟前
综合项目实战——电子商城信息查询系统
linux·c语言·网络·http·html·tcp·sqlite3
say_fall20 分钟前
C++ 类与对象易错点:初始化列表顺序 / 静态成员访问 / 隐式类型转换
android·java·开发语言·c++