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;
}
相关推荐
晓蛋16 小时前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
小羊没烦恼!16 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
傲世仙尊16 小时前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿17 小时前
重载、重写(覆盖)、重定义区别
c语言
伞伞悦读17 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
phltxy18 小时前
C 语言指针:从内存地址到灵活的数据访问
c语言
C语言小火车18 小时前
C/C++ 为什么需要编译器?
开发语言·c++
phltxy18 小时前
C 语言中的数据存储:从类型到二进制位
c语言
霍霍的袁19 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超19 小时前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust