//-------------------------
#define STRUCT( typ0, name0, val0, \
typ1, name1, val1 ) \
typedef struct { \
typ0 name0; \
typ1 name1; \
}name0 ## _t; \
name0 ## _t Obj_ ## name0 = {val0, val1};
//-------------------------
// для понятности при доступе
#define GET_MAMA Obj_mama.mama
#define GET_PAPA Obj_mama.papa
//-------------------------
// вот оно объевление и сразу присвоение значений :-)
STRUCT( char, mama, 23,
int , papa, 257
);
//-------------------------
// проверим что получилось
printf("%02x %04x\n", GET_MAMA, GET_PAPA);