如何在C中访问union中的struct成员?

ami*_*elz 7 c structure unions

我有以下联盟:

union employee
{
    char key;

    struct manager
    {
        short int age;
        float shares;
        short int level;
    };

    struct worker
    {
        short int age;
        short int skill;
        short int department;
    };

} company[10];
Run Code Online (Sandbox Code Playgroud)

如何访问联盟内部结构的成员employee?我尝试以这种方式访问结构的age成员manager:

company[i].manager.age

但我明白了error C2039: 'manager' : is not a member of 'employee'.

cni*_*tar 10

在标记声明后添加一些内容.也许:

struct manager
{
    short int age;
    float shares;
    short int level;
} manager;
Run Code Online (Sandbox Code Playgroud)

旁注:你没有正确使用工会.关键,即告诉您是在与经理或仅与工人打交道的领域,应该在工会之外的附件中.也许:

struct employee {
    char key;

    union {
        struct manager ...;
        struct worker ...;
    } u;
};
Run Code Online (Sandbox Code Playgroud)

正如dasblinkenlight所说,你可以在联盟之外声明你的经理/工人标签.