#define S1_CLASS int x; \
int y; \
int (*read_x)(); \
int (*read_y)();
typedef struct s1 {
S1_CLASS
} S1;
#define S2_CLASS S1_CLASS \
int z; \
int (*read_z)(); \
typedef struct s2 {
S2_CLASS
} S2;