#include <stdio.h>
struct structA_t{
char* a_one;
char* a_two;
};
struct structB_t{
char* b_one;
char* b_two;
char* b_three;
};
struct structC_t{
char* c_one;
char* c_two;
char* c_three;
};
typedef enum my_e_dataId{
dataid_invalid = 0,
dataid_a,
dataid_b,
dataid_c
} my_dataId;
typedef union u_data {
struct structA_t* a;
struct structB_t* b;
struct structC_t* c;
}mydata;
typedef struct s_some_type{
my_dataId dataId;
mydata myData;
}some_type;
static struct structA_t a = {"ads", "as"};
static struct structB_t b = {"zzds", "dfr", "shywsd"};
static struct structC_t c = {"ssa", "ad", "dhksdhs"};
int main (int argc, char** argv){
some_type sta[] = {
{dataid_a, (struct structA_t*) &a},
{dataid_b, (struct structA_t*) &b},
{dataid_c, (struct structA_t*) &c}
};
printf("second field of a: %s\n", sta
[0].
myData.
a->a_two
); printf("third field of c: %s\n", sta
[2].
myData.
c->c_three
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiAKc3RydWN0IHN0cnVjdEFfdHsKICBjaGFyKiBhX29uZTsKICBjaGFyKiBhX3R3bzsKfTsKIApzdHJ1Y3Qgc3RydWN0Ql90ewogIGNoYXIqIGJfb25lOwogIGNoYXIqIGJfdHdvOwogIGNoYXIqIGJfdGhyZWU7Cn07CiAKc3RydWN0IHN0cnVjdENfdHsKICBjaGFyKiBjX29uZTsKICBjaGFyKiBjX3R3bzsKICBjaGFyKiBjX3RocmVlOwp9OwogCnR5cGVkZWYgZW51bSBteV9lX2RhdGFJZHsKICBkYXRhaWRfaW52YWxpZCA9IDAsCiAgZGF0YWlkX2EsCiAgZGF0YWlkX2IsCiAgZGF0YWlkX2MKfSBteV9kYXRhSWQ7CiAKdHlwZWRlZiB1bmlvbiB1X2RhdGEgewogIHN0cnVjdCBzdHJ1Y3RBX3QqIGE7CiAgc3RydWN0IHN0cnVjdEJfdCogYjsKICBzdHJ1Y3Qgc3RydWN0Q190KiBjOwp9bXlkYXRhOwogCnR5cGVkZWYgc3RydWN0IHNfc29tZV90eXBlewogIG15X2RhdGFJZCBkYXRhSWQ7CiAgbXlkYXRhIG15RGF0YTsKfXNvbWVfdHlwZTsKIApzdGF0aWMgc3RydWN0IHN0cnVjdEFfdCBhID0geyJhZHMiLCAiYXMifTsKc3RhdGljIHN0cnVjdCBzdHJ1Y3RCX3QgYiA9IHsienpkcyIsICJkZnIiLCAic2h5d3NkIn07CnN0YXRpYyBzdHJ1Y3Qgc3RydWN0Q190IGMgPSB7InNzYSIsICJhZCIsICJkaGtzZGhzIn07CiAKaW50IG1haW4gKGludCBhcmdjLCBjaGFyKiogYXJndil7CiAgc29tZV90eXBlIHN0YVtdID0gewogICAge2RhdGFpZF9hLCAoc3RydWN0IHN0cnVjdEFfdCopICZhfSwKICAgIHtkYXRhaWRfYiwgKHN0cnVjdCBzdHJ1Y3RBX3QqKSAmYn0sCiAgICB7ZGF0YWlkX2MsIChzdHJ1Y3Qgc3RydWN0QV90KikgJmN9CiAgfTsKIAogIHByaW50Zigic2Vjb25kIGZpZWxkIG9mIGE6ICVzXG4iLCBzdGFbMF0ubXlEYXRhLmEtPmFfdHdvKTsKICBwcmludGYoInRoaXJkIGZpZWxkIG9mIGM6ICVzXG4iLCBzdGFbMl0ubXlEYXRhLmMtPmNfdGhyZWUpOwogCiAgcmV0dXJuIDA7Cn0=