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++开发1 分钟前
CMake进阶:find_package使用总结
开发语言·c++·cmake·跨平台编译
lxw18449125142 分钟前
PHP凉了?岗位缩水50%+,开发者该何去何从?
开发语言·php
weixin_456808382 分钟前
【沁恒蓝牙开发】2.4G PHY TX 数据流程
c语言
Clarence Liu10 分钟前
用 Go 从 100 亿个数中找到最小的 100 个数 —— 实战与原理
开发语言·后端·golang
Sɪʟᴇɴᴛ໊ོ23512 分钟前
C语言getchar()函数详解
c语言
xiaowu08016 分钟前
IEnumerable、IEnumerator接口与yield return关键字的相关知识
java·开发语言·算法
csbysj202021 分钟前
Perl 目录操作指南
开发语言
-To be number.wan22 分钟前
C++ 运算符重载入门:让“+”也能为自定义类型服务!
开发语言·c++
未来之窗软件服务22 分钟前
幽冥大陆(七十九)Python 水果识别训练视频识别 —东方仙盟练气期
开发语言·人工智能·python·水果识别·仙盟创梦ide·东方仙盟
王家视频教程图书馆27 分钟前
android java 开发网路请求库那个好用请列一个排行榜
android·java·开发语言