Это «плохая идея» (тм) - это намного, намного проще. более разумным, более переносимым и более удобным в написании, чтобы написать обычную функцию для преобразования. Например (при условии, что виджет имеет идентификатор и имя):
void PrintWidget( Widget * w ) {
printf( "widget id %d name %s " , w->id, w->name );
}