Хорошо, поэтому я пишу службу журнала, которая записывает некоторые данные в некоторый файл (скажем, имя файла log).Как получить доступ к определенному аргументу, не зная его тип [переменные аргументы] в C?
Тип данных, которые я хочу написать, варьируется, это может быть int или string или что-то еще.
До сих пор это, как моя функция выглядит:
void write_log(FILE * fp, char * event, ...)
{
va_list list;
va_start(list, event);
// Cannot use va_arg(list, type_of_var) here!!!
}
Так я называю функция может изменяться в зависимости от моих данных:
write_log(fp, "Memory size :", mem_size);
Или
write_log(fp, "Username :", username);
У меня есть не знаю, будет ли третий аргумент быть строкой или int или что-то еще.
Я мог бы использовать va_arg(list, type_of_var)
, но поскольку тип моих данных изменяется произвольно, я не могу его использовать.
Любая идея, как я могу получить доступ к 3-му аргументу функции, не зная ее типа?
Вы не можете. Как вы думаете, почему функции printf требуют строки формата? – DeiDei
Любая идея или обходные пути для моей функции? –
Обходное решение: определите 'struct' с нужными вами полями и передайте его функции, которая записывает файл. Эта функция считывает соответствующие данные из структуры и записывает их в ваш журнал. – ThunderWiring