Можно ли настроить printf?

У меня есть структура, которую мне нужно часто печатать. На данный момент я использую классическую оболочку для печати вокруг этой структуры:

void printf_mystruct(struct* my_struct)
{
   if (my_struct==NULL) return;
   printf("[value1:%d value2:%d]", struct->value1, struct->value2);
}

Эта функция удобна, но также очень ограничена. Я не могу добавить или добавить какой-нибудь текст, не создав новую оболочку. Я знаю, что могу использовать семейство va_arg , чтобы иметь возможность добавлять или добавлять некоторый текст, но мне кажется, что я бы повторно реализовал колесо.

Мне интересно, можно ли написать функцию настройки для printf. Я бы хотел написать что-то вроде этого:

register2printf("%mys", &printf_mystruct); 
...
if (incorrect)
  printf("[%l] Struct is incorrect : %mys\n", log_level, my_struct);

Возможно ли это? Как я могу это сделать?

NB: Я работаю под Ubuntu Linux 10.04 и использую gcc.

11
задан Coren 13 February 2012 в 14:21
поделиться