sizeof single struct member in C
Although defining the buffer size with a #define
is one idiomatic way to do it, another would be to use a macro like this:
#define member_size(type, member) sizeof(((type *)0)->member)
and use it like this:
typedef struct{ float calc; char text[255]; int used;} Parent;typedef struct{ char flag; char text[member_size(Parent, text)]; int used;} Child;
I'm actually a bit surprised that sizeof((type *)0)->member)
is even allowed as a constant expression. Cool stuff.