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;
}
相关推荐
ComputerInBook1 分钟前
函数调用栈帧分析(Windows平台)
c语言·windows·编译原理·汇编语言·c++语言
会飞的胖达喵2 分钟前
Qt自动信号槽连接机制:深入解析与应用实践
开发语言·qt
无奈笑天下4 分钟前
银河麒麟V10虚拟机安装vmtools报错:/bin/bash解释器错误, 权限不够
linux·运维·服务器·开发语言·经验分享·bash
superman超哥7 分钟前
仓颉动态特性探索:反射API的原理、实战与性能权衡
开发语言·后端·仓颉编程语言·仓颉·仓颉语言·仓颉动态特性·反射api
程序员阿鹏13 分钟前
@Autowired和@Resource的区别
java·开发语言·spring
Halo_tjn15 分钟前
Java List集合知识点
java·开发语言·windows·算法·list
superman超哥21 分钟前
仓颉元编程之魂:宏系统的设计哲学与深度实践
开发语言·后端·仓颉编程语言·仓颉·仓颉语言·仓颉语言特性
玄同76537 分钟前
Python 数据类型:LLM 语料与 API 参数的底层处理逻辑
开发语言·人工智能·python·自然语言处理·llm·nlp·知识图谱
Slow菜鸟42 分钟前
Java基础 | 布隆过滤器
java·开发语言
比奇堡派星星1 小时前
Linux Hotplug 机制详解
linux·开发语言·驱动开发