Nico, I'm not sure I see the point of your sfinit macro. To me, the named struct field initializers are all about being able to reorder the initializations or skip some. Your macro doesn't do that so I don't understand why I'd want it.