我有以下工会组织:

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}};

我只是想知道有什么办法可以用一个现有的数组来声明联合吗?这样地:
unsigned short arr[] = {255,255,255,0,255,0};
Message msg = {.whole=arr};

最佳答案

不,那是不可能的。在几乎所有上下文中,使用数组的名称都会“衰减”到指向第一个元素的指针。
顺便说一下,这与数组隐藏在union中的事实无关。无法将数组分配给,初始化它们的唯一方法是使用初始值设定项。
不过,您可以使用memcpy复制内容。

10-06 13:52