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;
}
相关推荐
zhaqonianzhu12 小时前
LOL切回桌面问题,采用监控抓出元凶方式
开发语言
Aurorar0rua12 小时前
CS50 x 2024 Notes Arrays - 04
c语言·开发语言·学习方法
wuminyu12 小时前
Java世界中StringTable源码剖析
java·linux·c语言·jvm·c++
一起吃元宵12 小时前
百度网盘下载不限速的办法_百度网盘不限速
开发语言·百度网盘·下载不限速·不限速·百度网盘不限速
人道领域12 小时前
【LeetCode刷题日记】47.全排列Ⅱ
java·开发语言·算法·leetcode
Navigator_Z12 小时前
LeetCode //C - 1095. Find in Mountain Array
c语言·算法·leetcode
ch3nyuyu13 小时前
socket套接字
开发语言·php
源图客13 小时前
境外电商 - 龙虾智能体-综合选品推荐报告
开发语言·javascript·ecmascript
是苏浙13 小时前
Java实现链表1
java·开发语言
Jinkxs13 小时前
Rust 性能优化全流程:从 flamegraph 定位瓶颈到 unsafe 与 SIMD 加速,响应快 2 倍
开发语言·性能优化·rust