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;
}
相关推荐
techdashen13 小时前
从 Windows 的 ping.exe 入手:动态库、调用约定与 Rust FFI
开发语言·windows·rust
AI科技星13 小时前
数术宇宙:零一无穷创世史诗
开发语言·网络·量子计算·拓扑学
SHARK_pssm13 小时前
【数据结构——树与堆】
c语言·数据结构·经验分享·笔记
是多巴胺不是尼古丁14 小时前
期末java复习--string
java·开发语言·python
Survivor00114 小时前
高并发系统流量治理的底层算法
java·开发语言
郝学胜-神的一滴14 小时前
CMake 017:彩色日志输出实战
linux·c语言·开发语言·c++·软件工程·软件构建·cmake
m0_5474866614 小时前
《数字图像处理:使用MATLAB分析与实现》全套课件PPT
开发语言·matlab·powerpoint
Full Stack Developme14 小时前
Apache Tika 教程
java·开发语言·python·apache
Navigator_Z14 小时前
LeetCode //C - 1096. Brace Expansion II
c语言·算法·leetcode
luj_176814 小时前
FreeDOS vs MS-DOS PC-DOS 对比解析
服务器·c语言·开发语言·经验分享·算法