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;
}
相关推荐
诚心呈意共享外卖配送系统几秒前
多平台订单聚合系统的技术架构:接 API 只是开始
java·开发语言·架构·系统架构·创业创新
星恒随风1 分钟前
Linux进程信号(一):从Ctrl+C到kill、raise、alarm,深入理解信号的概念与产生原理
linux·c语言·笔记·学习·状态模式
学逆向的17 分钟前
C 浮点数e(科学计数法)
c语言·开发语言·网络安全
知识分享小能手19 分钟前
C学习教程,从入门到精通,C语言数组 —— 知识点详解(8)
c语言·学习·算法
quantdash_cc28 分钟前
如何给自己的量化策略增加独立数据层?从数据获取到策略解耦的 Python 实践
开发语言·python·数据分析·量化交易·股票数据·quantdash
NeoGressAI外贸数字化29 分钟前
外贸独立站3类页面合格度,怎么用脚本一次跑完
开发语言·python
lhbweilai30 分钟前
分析FreeRTOS内核对象API的源码实现(三)
c语言·stm32·单片机
X北辰北40 分钟前
C++ 进阶第二阶段总结|STL容器全家桶、迭代器失效、STL算法、序列化入门(工程必备)
开发语言·c++·算法
伯恩bourne1 小时前
对比 @Configuration(Full) vs @Component(Lite)
java·开发语言
软件开发技术深度爱好者1 小时前
ndexTTS-2和 CosyVoice之TTS(Text-to-Speech)使用python示例
开发语言·python