我有以下 union 结构:
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}};
我只是想知道是否有任何解决方案可以通过现有数组声明 union ?像这样:
unsigned short arr[] = {255,255,255,0,255,0};
Message msg = {.whole=arr};
最佳答案
不,那是不可能的。在几乎所有上下文中,使用数组名称都会使其“衰减”为指向第一个元素的指针。
顺便说一句,这与您的数组隐藏在 union
中这一事实无关。数组无法赋值,初始化它们的唯一方法是像您一样使用初始化器。
不过,您可以只使用 memcpy
来复制内容。
关于c - 带有数组指针的 union 声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45313966/