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

C99 Keil MDK5中的匿名结构和联合,c,structure,c99,unions,keil,C,Structure,C99,Unions,Keil,我正在努力使一大块数据更易于管理 #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 s

我正在努力使一大块数据更易于管理

#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编译器,但我认为它应该可以工作。

它实际上比问题中的要复杂得多。但是你的回答给了我解决这个问题的想法。它起作用了。谢谢@SGeorgiades