2017-05-27 22 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

関連する問題