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;
}
相关推荐
黎雁·泠崖几秒前
C 语言的内存函数:memcpy/memmove/memset/memcmp 精讲(含模拟实现)
c语言·开发语言
aini_lovee2 分钟前
基于C# 和 NModbus 库的 Modbus TCP 通信示例源码
开发语言·tcp/ip·c#
HUST5 分钟前
C 语言 第八讲:VS实用调试技巧
运维·c语言·开发语言·数据结构·算法·c#
毕设源码-郭学长5 分钟前
【开题答辩全过程】以 共享单车后台管理系统为例,包含答辩的问题和答案
java·开发语言·tomcat
hqwest8 分钟前
码上通QT实战01--创建项目
开发语言·qt·sqlite3·qt项目·qwidget·qwindow
历程里程碑14 分钟前
LeetCode128:哈希集合巧解最长连续序列
开发语言·数据结构·c++·算法·leetcode·哈希算法·散列表
毕加锁15 分钟前
基于MindIE的SDXL多模态大模型推理加速指南(从部署到50it_s优化)
开发语言
Yeniden21 分钟前
Deepeek用大白话讲解 --> 状态模式(企业级场景1,自动售货机2,订单状态3,消除if-else4)
java·开发语言·状态模式
yzp-28 分钟前
记录一个死锁异常--循环打印 AB go语言
开发语言·后端·golang
tryxr1 小时前
Java 中 this 关键字的使用场景
java·开发语言·类与对象·this关键字