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;
}
相关推荐
故事和你912 分钟前
洛谷-【图论2-2】最短路1
开发语言·数据结构·c++·算法·动态规划·图论
Simple-Soft6 分钟前
指针的高级应用与技巧 - C语言的灵魂
c语言·数据结构·算法
csbysj20209 分钟前
Git 工作流程
开发语言
johnrui24 分钟前
JUC之AQS
java·开发语言·jvm
沫璃染墨33 分钟前
红黑树完全指南:从核心原理到插入验证全实现
开发语言·c++·算法
yu859395834 分钟前
基于 QT5.7.0 的八线激光雷达点云聚类实现
开发语言·qt·聚类
yoyo_zzm1 小时前
汇编到PHP:五大编程语言核心特性全解析
开发语言·汇编·php
.ZGR.1 小时前
线程池相关知识及并发统计案例实现
java·开发语言
流年如夢1 小时前
初入C++
开发语言·c++
zzzsde1 小时前
【Linux】线程同步和互斥(1):线程互斥与加锁实现
linux·运维·服务器·开发语言·算法