[英]Populate an array of array of structs?
我想声明一个结构,然后声明这些结构的数组,然后声明这些结构的数组。 前两个部分很好,我正在努力地进行第三部分。
当我尝试将数组分配给not_trace_groups时,我的代码将无法编译,并且无法弄清楚如何正确执行此操作。
typedef struct trace
{
uint32_t upstream_pin;
uint32_t dnstream_pin;
uint32_t led_pin;
}trace;
trace all_traces[NUM_TRACES] = {{GPIO_Pin_3, GPIO_Pin_7, GPIO_Pin_0},
{GPIO_Pin_4, GPIO_Pin_6 , GPIO_Pin_1},
{GPIO_Pin_5, GPIO_Pin_5 , PIO_Pin_1},
{GPIO_Pin_6, GPIO_Pin_4 , PIO_Pin_0},
{GPIO_Pin_7, GPIO_Pin_3 , GPIO_Pin_1},
{GPIO_Pin_0, GPIO_Pin_15, GPIO_Pin_2}};
trace not_trace_groups[NUM_TRACES][NUM_TRACES];
void main()
{
for (int i = 0; i < NUM_TRACES; i++)
{
not_trace_group[i] = {all_traces[i], all_traces[(i+1)%NUM_TRACES], all_traces[(i+2)%NUM_TRACES], all_traces[(i+3)%NUM_TRACES], all_traces[(i+4)%NUM_TRACES], all_traces[(i+5)%NUM_TRACES])};
}
while(1 == 1){
for (int i = 0; i < NUM_TRACES; i++)
{
trace_test(not_trace_group[i]);
}
}
void trace_test(trace cur_trace, trace not_trace1, trace not_trace2, trace not_trace3, trace not_trace4, trace not_trace5)
{
// do some stuff
}
我收到的错误是:
error: expected expression before '{' token
not_trace_group[i] = {all_traces[i], all_traces[(i+1)%NUM_TRACES], all_traces[(i+2)%NUM_TRACES], all_traces[(i+3)%NUM_TRACES], all_traces[(i+4)%NUM_TRACES], all_traces[(i+5)%NUM_TRACES])};
我以为也许我不能分配给数组的第二层,所以我尝试了一下:
trace not_trace_groups[NUM_TRACES];
但这给出了相同的错误
您不能使用-
not_trace_group[i] = {all_traces[i], all_traces[(i+1)%NUM_TRACES], all_traces[(i+2)%NUM_TRACES], all_traces[(i+3)%NUM_TRACES], all_traces[(i+4)%NUM_TRACES], all_traces[(i+5)%NUM_TRACES])};
因为这是只能在初始化时使用的分配。您不能像这样将值分配给not_trace_groups [i]。 您需要做的就是使用2进行循环,并获取确切的元素not_trace_group [i] [j]并为其分配值。 例如,您可以在此处分配值-
not_trace_group[0][0] = all_traces[0];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.