gpt4 book ai didi

arrays - 如何在编译时初始化一个由先前定义的数组组成的数组?

转载 作者:行者123 更新时间:2023-12-04 18:09:52 24 4
gpt4 key购买 nike

我在微 Controller 项目中使用 GCC 4.7.2 (C99) 和 Atmel Studio 6。

我想定义一系列一维数组,然后将它们排列成预定义序列的各种二维数组。

例如:

unsigned char a1[2] = { 0b00000001, 0b00000010 };
unsigned char a2[2] = { 0b00000010, 0b00000010 };
unsigned char a3[2] = { 0b00000100, 0b00000010 };

unsigned char pattern1[1][2] = { a1, a2, a3 };

但是,这会导致错误:

Initializer element is not computable at load time

我可以在编译后设置数组 -

unsigned char pattern1[1][2];

void setup_patterns()
{
pattern1[0] = a1;
pattern1[1] = a2;
pattern1[2] = a3;
}

但如果能够提供第一组数组的逗号分隔列表会容易得多,因为有多少数组以及将有多少模式。 (此处显示的示例非常简单。)

我对 C 编程不是很有经验(我习惯使用 C#)。 有没有办法使用定义/命名的一维数组列表来分配二维数组的元素?(无论是在编译时还是运行时,都没有关系。) p>

最佳答案

试试这个:

unsigned char *pattern1[] = { a1, a2, a3 };

unsigned char pattern1[1][2] 要求:

unsigned char pattern1[1][2] = { {1, 1} };

所以你可以通过嵌套数组初始化来编译你的案例:

unsigned char pattern1[3][2] = { 
{ 0b00000001, 0b00000010 },
{ 0b00000010, 0b00000010 },
{ 0b00000100, 0b00000010 },
};

关于arrays - 如何在编译时初始化一个由先前定义的数组组成的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17078660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com