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;
}
相关推荐
liu****14 小时前
1.模拟算法
开发语言·c++·算法·1024程序员节
数据村的古老师14 小时前
Python数据分析实战:基于25年黄金价格数据的特征提取与算法应用【数据集可下载】
开发语言·python·数据分析
孔明兴汉14 小时前
第一章-第三节-Java开发环境配置
java·开发语言
小王不爱笑13215 小时前
Java 核心知识点查漏补缺(一)
java·开发语言·python
空空kkk15 小时前
Java——类和对象
java·开发语言
沐知全栈开发16 小时前
Python3 集合
开发语言
Jonathan Star16 小时前
用Python轻松提取视频音频并去除静音片段
开发语言·python·音视频
Evand J17 小时前
【自适应粒子滤波MATLAB例程】Sage Husa自适应粒子滤波,用于克服初始Q和R不准确的问题,一维非线性滤波。附下载链接
开发语言·matlab·卡尔曼滤波·自适应滤波·非线性
hd51cc17 小时前
C++ 类的学习(四) 继承
开发语言·c++·学习
编码追梦人18 小时前
深耕 Rust:核心技术解析、生态实践与高性能开发指南
开发语言·后端·rust