【C/C++】推荐一个性能优良的错误码打印机制,已实测!

server/2024/12/25 1:02:07/

基于上1篇 switch与for的性能比较文章,若我们在开发一个较大型的系统架构,则错误码机制是必不可少的。
但是,基于灵活可扩展思想,我们的错误码是与日俱增的,所以,如何能不写很多switch-case语句,是我们的一个思考点。

下面是在下拙见,抛砖引玉,希望可以给大家一些帮助。

#include <stdio.h>
#include <stdlib.h>#define	TEST_ERRNO_MAP(E)\E(-1, UNKNOW, "unknown error")\E(0, SUCCESS, "success")\E(1, XXX, "XXX")\// TODO可一直连续扩展// 随着错误码数量的增多,编译器会将switch-case的查找基于跳转表进行组织,查找效率为O(1); 若数量较少,编译器则基于二分查找树进行组织,查找效率为O(logn)。 若为for循环遍历,则平均是O(n)。
const char *test_strerror(int test_err)
{switch (test_err) {#define TEST_ERR_CASE(n, e, s) case n : return s;TEST_ERR_MAP(TEST_ERR_CASE)#undef TEST_ERR_CASEdefault:return "unkown error";}return NULL;
}int main()
{for (int i = 0; i < 10; i++) {printf("test result: %s\n", test_strerror(i));}return 0;
}

大家可以试着用一用 ! 希望可以帮助到各位。


http://www.ppmy.cn/server/152913.html

相关文章

【题解】—— LeetCode一周小结50

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结49 9.判断国际象棋棋盘中一个格子的颜色 题目链接&#xff1a;…

PostgreSQL 的历史

title: PostgreSQL 的历史 date: 2024/12/23 updated: 2024/12/23 author: cmdragon excerpt: PostgreSQL 是一款功能强大且广泛使用的开源关系型数据库管理系统。其历史可以追溯到1986年,当时由加州大学伯克利分校的一个研究团队开发。文章将深入探讨 PostgreSQL 的起源、…

内容与资讯API优质清单

作为开发者&#xff0c;拥有一套API合集是必不可少的。这个开发者必备的API合集汇集了各种实用的API资源&#xff0c;为你的开发工作提供了强大的支持&#xff01;无论你是在构建网站、开发应用还是进行数据分析&#xff0c;这个合集都能满足你的需求。你可以通过这些免费API获…

探索大语言模型的世界:入门指南

随着人工智能技术的飞速发展&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为诸多行业关注的焦点。从自然语言处理到生成式人工智能&#xff0c;LLMs 正在改变我们与技术互动的方式。如果你刚刚接触大语言模型&#xff0c;不知道从何下手&…

STM32-按键扫描配置

问题引入 由于在使用例程中的按键时&#xff0c;发现按键无效&#xff0c;经过Debug发现程序进入按键扫描死循环中。 由于初始按键引脚时&#xff0c;按键引脚上拉&#xff0c;按下为高电平。给的引脚配置为浮空输入&#xff08;不确定高低电平&#xff09;&#xff0c;导致初…

用 Python 实现井字棋游戏

一、引言 井字棋&#xff08;Tic-Tac-Toe&#xff09;是一款经典的两人棋类游戏。在这个游戏中&#xff0c;玩家轮流在 3x3 的棋盘上放置自己的标记&#xff0c;通常是 “X” 和 “O”&#xff0c;第一个在棋盘上连成一线&#xff08;横、竖或斜&#xff09;的玩家即为获胜者。…

对象的状态变化处理与工厂模式实现

一、引言 在 C 编程中&#xff0c;有效地处理对象的状态变化以及合理运用设计模式可以极大地提高代码的可维护性、可扩展性和可读性。本文将深入探讨 C 如何处理对象的状态变化以及如何实现工厂模式。 二、C 中对象的状态变化处理 使用成员变量表示状态 class GameCharacte…

图像生成工具WebUI

介绍 Stable Diffusion WebUI&#xff08;AUTOMATIC1111&#xff0c;简称A1111&#xff09;是一个为高级用户设计的图形用户界面&#xff08;GUI&#xff09;&#xff0c;它提供了丰富的功能和灵活性&#xff0c;以满足复杂和高级的图像生成需求。如今各种人工智能满天飞&…