#include <stdio.h>
#include <stdlib.h>
typedef struct MainStruct {
struct SubStruct1 {
int x;
int y;
int Value;
} s1;
struct SubStruct2 {
int y;
int Value;
int x;
} s2;
struct SubStruct3 {
int Value;
int x;
int y;
} s3;
} MainStruct_t;
typedef union {
struct SubStruct1 *s1;
struct SubStruct2 *s2;
struct SubStruct3 *s3;
int Value;
} T;
void setValue( T **t, int i )
{
(*t)->Value=i;
}
int main()
{
MainStruct_t x;
T t;
setValue( (t.s1=&x.s1,&t), 1);
setValue( (t.s2=&x.s2,&t), 2);
setValue( (t.s3=&x.s3,&t), 3);
printf( "%d %d %d",x.
s1.
Value,x.
s2.
Value,x.
s3.
Value);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KIAp0eXBlZGVmIHN0cnVjdCBNYWluU3RydWN0IHsKIAogICAgc3RydWN0IFN1YlN0cnVjdDEgewogICAgICAgIGludCB4OwogICAgICAgIGludCB5OwogICAgICAgIGludCBWYWx1ZTsKICAgIH0gczE7CiAKICAgIHN0cnVjdCBTdWJTdHJ1Y3QyIHsKICAgICAgICBpbnQgeTsKICAgICAgICBpbnQgVmFsdWU7CiAgICAgICAgaW50IHg7CiAgICB9IHMyOwogCiAgICBzdHJ1Y3QgU3ViU3RydWN0MyB7CiAgICAgICAgaW50IFZhbHVlOwogICAgICAgIGludCB4OwogICAgICAgIGludCB5OwogICAgfSBzMzsKIAp9IE1haW5TdHJ1Y3RfdDsKIAp0eXBlZGVmIHVuaW9uIHsKICAgIHN0cnVjdCBTdWJTdHJ1Y3QxICpzMTsKICAgIHN0cnVjdCBTdWJTdHJ1Y3QyICpzMjsKICAgIHN0cnVjdCBTdWJTdHJ1Y3QzICpzMzsKICAgIGludCBWYWx1ZTsKfSBUOwogCnZvaWQgc2V0VmFsdWUoIFQgKip0LCBpbnQgaSApCnsKICAoKnQpLT5WYWx1ZT1pOwp9CiAKaW50IG1haW4oKQp7CiAgICBNYWluU3RydWN0X3QgeDsKICAgIFQgdDsKIAogICAgc2V0VmFsdWUoICh0LnMxPSZ4LnMxLCZ0KSwgMSk7CiAgICBzZXRWYWx1ZSggKHQuczI9JnguczIsJnQpLCAyKTsKICAgIHNldFZhbHVlKCAodC5zMz0meC5zMywmdCksIDMpOwogCiAgICBwcmludGYoICIlZCAlZCAlZCIseC5zMS5WYWx1ZSx4LnMyLlZhbHVlLHguczMuVmFsdWUpOwogCiAgICByZXR1cm4gMDsKfQ==