gpt4 book ai didi

c - 将错误文本与 C 中的错误代码相关联

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:03 25 4
gpt4 key购买 nike

我将编写一个函数,将错误消息转换为错误代码。所以我有一系列错误消息

const char *arr_error_message[] = 
{
"Critical error",
"Unexpected error",
...
}

和错误代码的枚举:

typedef enum error_code
{
FIRST = 0,
CRITICAL_ERROR = FIRST,
UNEXPECTER_ERROR,
...
LAST,
NOT_FOUND_ERROR
} error_code_t;

函数将是

error_code_t translate_error_code(const char *err)
{
error_code_t e = FIRST;
do
{
if ( strcmp(arr_error_message[e], err) == 0 ) return e;
} while (++e != LAST);

return NOT_FOUND_ERROR;
}

什么是更有效的函数实现方式,有什么方法(trick)可以实现复杂度为 O(1) 的函数?

最佳答案

我认为这只是获得正确数据结构的问题。如果您希望能够从错误代码直接映射到字符串表示形式,您可以只返回存储在适当数组索引中的错误代码:

return arr_error_message[err];

另一方面,如果您想将错误消息映射到错误代码,您可以考虑使用哈希表。由于您的错误代码集(可能)相对恒定,您可以考虑使用 gperf tool to generate a perfect hash table ,这将使极快地将错误消息映射到错误代码成为可能。

希望这对您有所帮助!

关于c - 将错误文本与 C 中的错误代码相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com