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;
}
相关推荐
河阿里6 分钟前
Java包装类(Wrapper):自动装箱拆箱机制与类型转换的那些坑
java·开发语言
jekc86812 分钟前
金蝶云星空调用第三方接口
开发语言·python
专注VB编程开发20年18 分钟前
json和python元组,列表,字典对比
开发语言·python·json·php
ComputerInBook20 分钟前
C++ 14 相比 C++ 11新增之特征
开发语言·c++·c++ 14
微风欲寻竹影29 分钟前
Java数据结构——栈(Stack)详解
java·开发语言·数据结构
TechWayfarer32 分钟前
网络安全视角:利用IP定位API接口识别机房与基站流量(合规风控篇)
开发语言·网络·数据库·python·安全·网络安全
Makoto_Kimur33 分钟前
Java 后端面试场景题:页面刷新后一直转圈,应该怎么排查?
java·开发语言·面试
小陶来咯33 分钟前
aimrt中间件的使用
开发语言·qt·中间件
神仙别闹33 分钟前
基于C语言实现(控制台)学生信息管理系统
c语言·开发语言
ch.ju1 小时前
Java Programming Chapter 3——Default value of array
java·开发语言