【C/C++】推荐一个性能优良的错误码打印机制,已实测!
基于上1篇 switch与for的性能比较文章,若我们在开发一个较大型的系统架构,则错误码机制是必不可少的。
但是,基于灵活可扩展思想,我们的错误码是与日俱增的,所以,如何能不写很多switch-case语句,是我们的一个思考点。
下面是在下拙见,抛砖引玉,希望可以给大家一些帮助。
#include <stdio.h>
#include <stdlib.h>
#defineTEST_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_CASE
default:
return "unkown error";
}
return NULL;
}
int main()
{
for (int i = 0; i < 10; i++) {
printf("test result: %s\n", test_strerror(i));
}
return 0;
}
大家可以试着用一用 ! 希望可以帮助到各位。
原文地址:https://blog.csdn.net/qq_37286579/article/details/144664419
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!