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;
}
相关推荐
从零开始的嵌入式之旅2 分钟前
day32
linux·c语言·经验分享·笔记·嵌入式硬件
huaweichenai4 分钟前
PHP实现对接MQTT协议
开发语言·php
牧羊人.3338 分钟前
动手学深度学习 01:核心组件与完整训练流程
开发语言·人工智能·深度学习
晓晓_za89866810 分钟前
GEO 搜索源码白帽合规改造:适配各大 AI 信源收录规则
java·开发语言·人工智能·性能优化·开源
一条破秋裤22 分钟前
C-数据类型
c语言·开发语言·chrome
君顾127 分钟前
从0到1课后辅导管理系统开发实战:需求文档、架构设计全复盘
java·开发语言
xx~t28 分钟前
嵌入式学习——进程与线程2
linux·c语言·学习·进程与线程
神仙别闹28 分钟前
基于C++ MFC RSA 实现加密程序
开发语言·c++·mfc
增量星球44 分钟前
一个 Python 脚本 + LLM 怎么替代向量检索?ProjQA 技能架构原理深度解析
开发语言·python·架构·embedding·skill
探数API小喇叭1 小时前
基站查询 API 怎么用?LAC、CELLID 参数详解与实战】
java·开发语言·api·基站定位