#include <stdio.h>
#include <stdlib.h>
typedef struct MainStruct {
struct SubStruct1 {
int Value;
} s1;
struct SubStruct2 {
int Value;
} s2;
struct SubStruct3 {
int Value;
} 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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IE1haW5TdHJ1Y3QgewoKICAgIHN0cnVjdCBTdWJTdHJ1Y3QxIHsKICAgICAgICBpbnQgVmFsdWU7CiAgICB9IHMxOwoKICAgIHN0cnVjdCBTdWJTdHJ1Y3QyIHsKICAgICAgICBpbnQgVmFsdWU7CiAgICB9IHMyOwoKICAgIHN0cnVjdCBTdWJTdHJ1Y3QzIHsKICAgICAgICBpbnQgVmFsdWU7CiAgICB9IHMzOwoKfSBNYWluU3RydWN0X3Q7Cgp0eXBlZGVmIHVuaW9uIHsKICAgIHN0cnVjdCBTdWJTdHJ1Y3QxICpzMTsKICAgIHN0cnVjdCBTdWJTdHJ1Y3QyICpzMjsKICAgIHN0cnVjdCBTdWJTdHJ1Y3QzICpzMzsKICAgIGludCBWYWx1ZTsKfSBUOwoKdm9pZCBzZXRWYWx1ZSggVCAqKnQsIGludCBpICkKewogICgqdCktPlZhbHVlPWk7Cn0KCmludCBtYWluKCkKewogICAgTWFpblN0cnVjdF90IHg7CiAgICBUIHQ7CgogICAgc2V0VmFsdWUoICh0LnMxPSZ4LnMxLCZ0KSwgMSk7CiAgICBzZXRWYWx1ZSggKHQuczI9JnguczIsJnQpLCAyKTsKICAgIHNldFZhbHVlKCAodC5zMz0meC5zMywmdCksIDMpOwoKICAgIHByaW50ZiggIiVkICVkICVkIix4LnMxLlZhbHVlLHguczIuVmFsdWUseC5zMy5WYWx1ZSk7CiAgICAKICAgIHJldHVybiAwOwp9Cgo=