2017-05-27 30 views
0

我试图以更易于管理的方式制作大块数据。匿名结构,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; 

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

回答

1

也许......

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

+0

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

+0

很高兴我能帮上忙。也许是投票? – SGeorgiades