我写了一段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';”在声明结束时”。有人可以帮忙解释一下这里的错误吗?
谢谢!

最佳答案

您不能在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
};

关于c - 锯齿状数组在C-中的实现错误:预期为';'在声明 list 的末尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53274062/

10-14 07:27