Страницы

Поиск по вопросам

пятница, 7 июня 2019 г.

Как в C передать в функцию переменное количество аргументов?

Есть функция, которая завершает программу, выполняя занесение отладочной информации в файл лога:
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);

Комментариев нет:

Отправить комментарий