#include <iostream>
using namespace std;
struct TYPE1 {
TYPE1(const char *name, int val) : a(val) {}
int a;
};
struct TYPE2 {
char g[3];
};
struct PARAMS {
PARAMS(int address, const char *name, const TYPE1 &f) :
Address(address), Name(name), u(f)
{
}
PARAMS(int address, const char *name, const TYPE2 &b) :
Address(address), Name(name), u(b)
{
}
int Address;
char const *Name;
union union_name
{
union_name(const TYPE1 &f) : foo(f) {}
union_name(const TYPE2 &b) : bar(b) {}
TYPE1 foo;
TYPE2 bar;
}u;
};
const PARAMS paramTbl[] {
PARAMS(0x1000, "Param1", TYPE1("abc", 0)),
};
int main() {
cout << paramTbl[0].Name << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFRZUEUxIHsKCVRZUEUxKGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWwpIDogYSh2YWwpIHt9CglpbnQgYTsKfTsKCnN0cnVjdCBUWVBFMiB7CgljaGFyIGdbM107Cn07CgpzdHJ1Y3QgUEFSQU1TIHsKICBQQVJBTVMoaW50IGFkZHJlc3MsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IFRZUEUxICZmKSA6CiAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyhhZGRyZXNzKSwgTmFtZShuYW1lKSwgdShmKQogIHsKICB9CiAgUEFSQU1TKGludCBhZGRyZXNzLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBUWVBFMiAmYikgOgogICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoYWRkcmVzcyksIE5hbWUobmFtZSksIHUoYikKICB7CiAgfQoKICBpbnQgQWRkcmVzczsKICBjaGFyIGNvbnN0ICpOYW1lOyAgICAgICAgIAogIHVuaW9uIHVuaW9uX25hbWUKICB7CiAgICB1bmlvbl9uYW1lKGNvbnN0IFRZUEUxICZmKSA6IGZvbyhmKSB7fQogICAgdW5pb25fbmFtZShjb25zdCBUWVBFMiAmYikgOiBiYXIoYikge30KICAgIFRZUEUxIGZvbzsKICAgIFRZUEUyIGJhcjsKICB9dTsKfTsKCmNvbnN0IFBBUkFNUyBwYXJhbVRibFtdIHsKICBQQVJBTVMoMHgxMDAwLCAiUGFyYW0xIiwgVFlQRTEoImFiYyIsIDApKSwKfTsKCmludCBtYWluKCkgewoJY291dCA8PCBwYXJhbVRibFswXS5OYW1lIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==