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 小时前
Python 面向对象高级:继承与类定义详解
开发语言·python
白露与泡影4 小时前
2026大厂Java面试题大全!牛客网最新版
java·开发语言
凯瑟琳.奥古斯特5 小时前
高阶子查询题目精炼
开发语言·数据库·python·职场和发展·数据库开发
雪度娃娃5 小时前
转向现代C++——在意为改写的函数添加 override
开发语言·c++
喵星人工作室6 小时前
C++火影忍者1.1.2
开发语言·c++
basketball6166 小时前
C++ 中的 ptrdiff_t 详解
开发语言·c++
星恒随风6 小时前
C语言数据结构排序算法详解(下):冒泡排序、快速排序、归并排序和计数排序
c语言·数据结构·笔记·学习·排序算法
月亮邮递员6167 小时前
Markdown语法总结
开发语言·前端·javascript
printfLILEI7 小时前
php中的类与对象以及反序列化
linux·开发语言·php
曹牧7 小时前
C#:主线程能够捕获到子线程中的异常
开发语言·数据库·c#