Решал подобную задачу через X-macro.
PS: чего не хватает во встроенных возможностях языка, так это последовательного перебора полей структур во время выполнения.
Не в ту сторону языки развиваются.