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;
}
相关推荐
YOU OU3 分钟前
JVM基础知识
开发语言·jvm
平凡但不平庸的码农5 分钟前
Go 语言:值传递 vs 指针传递
开发语言·后端·golang
神仙别闹7 分钟前
基于Python实现一个C语言的编译器
java·c语言·python
Allen_LVyingbo9 分钟前
面向医疗群体智能的协同诊疗与群体决策支持系统(下)
开发语言·数据结构·windows·python·动态规划
读书札记202211 分钟前
Qt Creator 调试报错:Unable to create a debugging engine.
开发语言·qt
透明的玻璃杯11 分钟前
Qt Creator + Windows + Protobuf 最优方案(Mqqt通讯采用的方式)
开发语言·windows·qt
小书房15 分钟前
Kotlin协程的运行原理
android·开发语言·kotlin·协程
隐退山林17 分钟前
JavaEE进阶:SpringIoC&DI
java·开发语言·java-ee
水煮白菜王17 分钟前
Claude Code 全方位使用手册
java·开发语言·网络
Highcharts.js18 分钟前
金融Web App中的复杂时序数据可视化:从选型到高性能实践
开发语言·金融·highcharts·实战代码·响应式图表