LINUX.ORG.RU

var argument list в C


0

0

Нужно создать printf-подобную ф-цию f(fmt, arg1, ... argn). Проблема в том, что потом все аргументы этой функции надо передать в snprintf, не разбирая fmt, надо как-то взять их всех за шкирку и рассадить по соотв. местам в snprintf и ещё впендюрить 1-й аргумент (буфер). Нужно что-то вроде лиспового &rest. Никак не пойму, то ли я торможу, то ли это нельзя сделать без грубых хаков.

★★★★★

Грубый хак - последним пусть идёт известный какой либо указатель, маркер конца списка. NULL не всегда можно использовать, естественно.

anonymous
()

Извини, я не смог понять твоего вопроса. Тебе просто надо сделать обёртку над printf? Возможно, я знаю твой ответ. Но я ленив, и лучше дам ссылку на поиск, чем рассказывать снова:

http://www.linux.org.ru/search.jsp?q=va_start&include=all&date=3month...

Не обессудь, если не по теме, ответил на тот вопрос, какой понял.

alexsaa
()

ясно

seiken ★★★★★
() автор топика

Что-то типа такого:

inline static void _debug(const char *const message, ...)
{
  va_list args;

  va_start(args, message);
  vfprintf(stderr, message, args);
  va_end(args);
}

anonymous
()
Ответ на: комментарий от anonymous

Ага, я уже так и сделал. Всем спасибо за внимание.

seiken ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.