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;
}
相关推荐
cici1587410 分钟前
MATLAB/Simulink单相光伏并网逆变器仿真
开发语言·matlab
Dev7z11 分钟前
基于MATLAB小波分析的图像增强算法及其仿真实现
开发语言·matlab
代码游侠15 分钟前
学习笔记——栈
开发语言·数据结构·笔记·学习·算法
编程修仙20 分钟前
第七篇 java的注解以及使用反射实现自定义注解功能
xml·java·开发语言·spring
qq_73917536923 分钟前
开源基于STC8的智能浇花与温湿度报警系统
c语言·stm32·单片机·嵌入式硬件
GesLuck33 分钟前
Beaglebone BB Black C版 AM3358(一)
c语言·开发语言·物联网·硬件架构
lusasky35 分钟前
Java内存堆栈AI分析工具全览
java·开发语言
CoderYanger35 分钟前
C.滑动窗口-越长越合法/求最短/最小——2904. 最短且字典序最小的美丽子字符串
java·开发语言·数据结构·算法·leetcode·1024程序员节
QQ_4376643141 小时前
常见题目及答案
android·java·开发语言
hefaxiang1 小时前
C语言数据类型和变量(上)
c语言·开发语言