On Thu, Dec 11, 2014 at 09:54:47AM +0100, Daniel Stenberg wrote: > On Thu, 11 Dec 2014, Jakub Hrozek wrote: > > >>You want me to add a couple of `void*`? > > > >I was thinking: > > uint8_t reserved[16]; > > Another way, which is one I've used elsewhere, is this: > > struct larger_in_future { > int age; /* generation of struct */ > void *member; /* always present */ > } > > And c-ares would always set age to 0 in the first generation. A future > extension of the struct would bump the age to 1 and extend the struct: > > struct larger_in_future { > int age; /* generation of struct */ > void *member; /* always present */ > > /* only present if 'age' is >= 1 */ > void *later; > } > > It means a program has to check age before accessing struct fields below > 'member' which is a bit of an annoyance, but possibly doable as the bumping > shouldn't happen terrible often?
I don't have a problem with that personally. It's a neat trick I haven't used before.