none
請問C++程式中struct及Union更改為C#的方法 RRS feed

  • 問題

  • 大家好:

                  小弟想要將一個C++程式更改為C#,其中遇到Struct中包含Union的問題,而此Union中又使用到其他Struct,如下列紅色程式碼所示,請問各位能否給小弟一些寶貴的建議,謝謝大家,C++程式碼如下:


     typedef enum

    {
        RC_SIG_MESSAGE = 0x0,    
        L_SIG_MESSAGE,      
        MAX_DMA_SIG_LOG_TYPE = 0xFF 
      }dma_sig_log_type;


     typedef struct

    {
         uint8   hannel_type;     
         uint8   rb_id;     
         uint16   length;      
         uint8   signalling_message[32];
      }rc_sig_msg_information_type;


     typedef struct

     {
          uint8   nas_message_direction;  
          uint32   nas_message_length;  
          uint8   nas_message[32]; 
       }l_sig_msg_information_type;

     

    typedef struct

     {
         rc_sig_msg_information_type    hdr[16];
         dma_sig_log_type     msg_type;
         union

       {
            rc_sig_msg_information_type   rc_sig_msg;
            l_sig_msg_information_type    l_sig_msg;
         }msg;
       }dma_sig_msg_information_type;

    2007年4月14日 上午 06:27

解答

  • union似乎是沒有支援的

    你可以把他宣告成byte array來處理

    不過就比較辛苦就是

    這裡有篇文章給你參考

    http://www.codeproject.com/netcf/cedbnet.asp

    Using a technique already described by Alex Yakhnin, we convert the structure into a flat byte array and feed it to the function that will happily consume it as being generated from a native code consumer.

    2007年4月18日 下午 05:27