C99 Keil MDK5 中的匿名结构、联合

Anonymous structures, unions in C99 Keil MDK5

我正在努力使大量数据更易于管理。

#pragma anon_unions

typedef union
{
        uint8_t Contents[PACKET_SIZE];

        struct
        {
            uint8_t Command;
            uint8_t X[24];
            uint8_t Y[24];
            uint8_t Z[16];
            uint8_t something;
            .
            .
            .


        };

        struct
        {
            uint8_t Command; // have to rename to dummy_Command to avoid compiler error
            uint8_t A;
            uint8_t B[6];
            uint8_t C[48];
            .
            .
            .

        };
} PacketToFromFile;

有没有办法仍然使用相同的名称,例如 'Command' 而没有任何编译器错误?

也许……

#pragma anon_unions

typedef union {
        uint8_t Contents[PACKET_SIZE];

        struct {
            uint8_t Command;
            union {
                struct {
                    uint8_t X[24];
                    uint8_t Y[24];
                    uint8_t Z[16];
                    uint8_t something;
                      :
                      :
                };
                struct {
                    uint8_t A;
                    uint8_t B[6];
                    uint8_t C[48];
                      :
                      :
               };
        }
    }
} PacketToFromFile;

我没有 Keil 编译器,但我认为这应该可以。