Есть функция, которая завершает программу, выполняя занесение отладочной информации в файл лога:
void crash(const char *const _fstr, ...)
{
if ( (_fstr != NULL) && (strlen(_fstr) > 0) )
{
FILE *f = fopen(CRASH_LOG_FILE_NAME, "a");
fprintf(f, _fstr, ???);
fclose(f);
}
abort();
}
Я хочу сделать, чтобы в функцию crash() передавалась строка формата и какое-то количество аргументов. Ситуации бывают разные. При некоторых крашах в файл желательно заносить не только строку с описанием проблемы, но еще и ряд кодов, например GetLastError() и WSAGetLastError()
Как это сделать?
Ответ
Вам нужно использовать функцию vfprintf, а передавать ей аргумент типа va_list, который получаете в своей функции примерно как
void crash(const char *const _fstr, ...)
{
va_list ap;
va_start(ap, _fstr);
...
vfprintf(f,_fstr,ap);
...
va_end(ap);
Комментариев нет:
Отправить комментарий