エラー メッセージをエラー コードに変換する関数を作成します。だから私はエラーメッセージの配列を持っています
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;
}
関数実装のより効率的な方法は何ですか?複雑さ O(1) で関数を実装する方法(トリック)はありますか?