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