2017-07-25 99 views
1

我有以下工會結構:與數組指針的聯合聲明?

typedef union Message 
{ 
    struct 
    { 
    unsigned short header: 16; 
    unsigned short header2: 16; 
    unsigned int timestamp: 32; 
    unsigned int payload: 32; 

    } pieces; 
    unsigned short whole[6]; 
}Message; 

如果我宣佈這樣它的工作原理

Message msg = {.whole={255,255,255,0,255,0}}; 

我只是想知道有什麼方法解決由exsisting陣列申報工會嗎?像這樣:

unsigned short arr[] = {255,255,255,0,255,0}; 
Message msg = {.whole=arr}; 

回答

3

不,那是不可能的。使用數組的名稱在幾乎所有上下文中都會「衰減」到指向第一個元素的指針。

順便說一句,這與你的數組隱藏在union內部無關。數組不能分配給它,並且初始化它們的唯一方法就是使用初始化程序。

不過,您可以使用memcpy複製內容。