Страницы

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

вторник, 31 марта 2020 г.

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

#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().

Как это сделать?
    


Ответы

Ответ 1



Вам нужно использовать функцию vfprintf, а передавать ей аргумент типа va_list, который получаете в своей функции примерно как void crash(const char *const _fstr, ...) { va_list ap; va_start(ap, _fstr); ... vfprintf(f,_fstr,ap); ... va_end(ap);

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

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