我写了一段如下的C代码:-
typedef struct {
unsigned int buffer_ctrl[4];
unsigned int buffer1[10];
unsigned int buffer2[40];
unsigned int buffer3[20];
unsigned int buffer4[15];
unsigned int *buffer_ptr[4] = {buffer1, buffer2, buffer3, buffer4};
unsigned int canary[4];
} buffer_t;
我将其写在主代码中包含的头文件中。我已经阅读了很多有关C语言中锯齿状数组的示例,并认为这样可以很好地工作。链接之一是Do jagged arrays exist in C/C++?。
但是,当我编译时,出现错误“ expected';”在声明结束时”。有人可以帮忙解释一下这里的错误吗? 谢谢!
答案 0 :(得分:2)
您不能在buffer_ptr
结构本身的定义内分配给buffer_t
。您必须先定义buffer_t
类型的变量,然后再分配给它。
您可以执行以下操作:
buffer_t bt = {
.buffer_ptr[0] = bt.buffer1,
.buffer_ptr[1] = bt.buffer2,
.buffer_ptr[2] = bt.buffer3,
.buffer_ptr[3] = bt.buffer4
};