我试图用指定的初始化器初始化一个const struct但是,struct元素之一是固定宽度数组我已经有了要用另一个适当大小的固定宽度数组初始化数组的内容。
有没有办法用指定的初始值设定项来实现这一点下面是一个简单的(失败的例子)我正在努力实现的目标。

struct foo {
    uint8_t array1[4];
    uint8_t array2[4];
}

uint8_t array[4] = {
    1, 2, 3, 4
};

struct foo const bar = {
   .array1 = array,     // incompatible pointer to integer conversion
   .array2 = { *array } // only copies the first element
};

最佳答案

简而言之:你不能复制数组(不使用(标准库)函数)这些警告来自这样一个事实,即不能将数组作为一个整体赋值,即使它们是静态的或常量的当一个数组被用作赋值中的r值时,它会衰减为指针,因此不能被赋值给另一个数组(作为一个整体)。
最简单的方法是使用memcpy,但显然这必须在函数内部。

关于c - 在指定的初始值设定项中复制阵列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20134563/

10-16 18:57