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;
}
相关推荐
花生了什么事o13 小时前
synchronized 与 ReentrantLock:Java 锁机制原理与实现对比
java·开发语言
aramae13 小时前
C++ IO流完全指南:从C标准库到C++流式编程
服务器·c语言·开发语言·c++·后端
ZHOU_WUYI13 小时前
4. light wam 模型loss计算过程
开发语言·人工智能·python
长不胖的路人甲14 小时前
Serial 串行、Parallel 并行、CMS 并发收集器
java·开发语言·jvm
麻瓜老宋15 小时前
AI开发C语言应用按步走,表达式计算器calc的第二十四步,结束开发,生成calc 用法指南
c语言·开发语言·atomcode
霸道流氓气质15 小时前
分布式系统中接口时序不确定性处理
java·开发语言·分布式
库克克15 小时前
【C++】C++11 包装器function 与 绑定器 bind
开发语言·c++
0x3F(小茶)15 小时前
STM32 SPI的5种方向模式
c语言·stm32·单片机·嵌入式硬件
多加点辣也没关系15 小时前
JavaScript|第30章:事件机制
开发语言·javascript
小大宇15 小时前
python milvus 案例
开发语言·python·milvus