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;
}
相关推荐
4***14902 分钟前
C++在系统中的编译优化
开发语言·c++
田姐姐tmner4 分钟前
Python切片
开发语言·python
oioihoii7 分钟前
C++程序执行起点不是main:颠覆你认知的真相
开发语言·c++
周杰伦fans36 分钟前
C# 中的**享元工厂**模式
开发语言·数据库·c#
历程里程碑38 分钟前
各种排序法大全
c语言·数据结构·笔记·算法·排序算法
u***u68542 分钟前
C++在系统中的异常处理
java·开发语言·c++
树在风中摇曳43 分钟前
带哨兵位的双向循环链表详解(含 C 代码)+ LeetCode138 深度解析 + 顺序表 vs 链表缓存机制对比(图解 CPU 层级)
c语言·链表·缓存
爱学测试的雨果1 小时前
收藏!软件测试面试题
开发语言·面试·职场和发展
安然无虞1 小时前
JMeter性能测试工具·下
开发语言·测试工具·jmeter
4***R2401 小时前
C++在音视频处理中的库
开发语言·c++·音视频