Я использовал следующую ссылку: https://www.embedded.com/design/programming-languages-and-tools/4215552/Seventeen-steps-to-safer-C-code, чтобы улучшить ведение журнала текущих ошибок проекта, над которым я работаю.
Моя конечная цель - создать перечисление "тип ошибки".Я бы сопоставил эти типы ошибок с таблицей поиска char *, которую я мог бы использовать для записи более подробного объяснения того, что это за ошибка.
Таким образом, у меня есть все мои коды ошибок и соответствующие строки ошибок в центральном месте, и я могу легко изменять / искать сообщение и код ошибки без необходимости копаться в коде.
Как PoC, мой заголовочный файл содержит следующее:
typedef enum {
ECODE_OK = 0, // OK
ECODE_SAMPLE_ERR = 1,
ECODE_LAST
} myEcodes;
char * ecodeMap[ECODE_LAST+1];
char * ecodeName(myEcodes err);
Моя реализация в C заголовка включена ниже:
char * ecodeMap[ECODE_LAST+1] =
{
"No error to report",
"Example Error Code - Invalid Value",
"Last ecode place holder"
};
char * ecodeName(myEcodes err)
{
return (char *) eyescanEcodeMap[err];
}
Мой вопрос таков:скажем, у меня есть следующий фрагмент кода для регистрации ошибки, с которой я столкнулся:
fprintf(fp, "%s", ecodeName(ECODE_SAMPLE_ERR));
Что если я хочу, чтобы ECODE_SAMPLE_ERR фактически содержал отформатированную строку, такую как
"Example Error Code - Invalid Values: %d %d", myVarInt1, myVarInt2
вместо просто
"Example Error Code - Invalid Value"
Как лучше всего иметь возможность форматировать отдельные строки в моем массиве char * так, чтобы я мог включать значение переменных в определенные записи?