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;
}
相关推荐
while(1){yan}4 分钟前
文件IO的常识
java·开发语言·青少年编程·电脑常识
进击的荆棘23 分钟前
C++起始之路——类和对象(下)
开发语言·c++
帅得不敢出门28 分钟前
精简Android SDK(AOSP)的git项目提高git指令速度
android·java·开发语言·git·elasticsearch
liu****29 分钟前
10.排序
c语言·开发语言·数据结构·c++·算法·排序算法
爱写Bug的小孙30 分钟前
Tools、MCP 和 Function Calling
开发语言·人工智能·python·ai·ai编程·工具调用
小小Fred31 分钟前
FreeRTOS函数prvInitialiseNewTask解析
java·开发语言
小杜的生信筆記38 分钟前
基于R语言绘制网络图,新人选手上手
开发语言·r语言·生物信息学·组学
fufu031141 分钟前
Linux环境下的C语言编程(三十九)
c语言·数据结构·算法·链表
小码哥06842 分钟前
家政服务管理-家政服务管理平台-家政服务管理平台源码-家政服务管理平台java代码-基于springboot的家政服务管理平台
java·开发语言·spring boot·家政服务·家政服务平台·家政服务系统·家政服务管理平台源码
爪洼守门员43 分钟前
前端性能优化
开发语言·前端·javascript·笔记·性能优化