У меня есть структура, которую мне нужно печатать часто. На данный момент я использую классическую оболочку для печати вокруг этой структуры:
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.