如何初始化具有可变索引的结构数组

PSR*_*PSR 5 c arrays struct

我的结构如下

typedef struct
{
    int a;
    int b;
    int c;
} my_struct;
Run Code Online (Sandbox Code Playgroud)

在另一个文件中,我声明了这种my_struct类型的变量,如下所示.

my_struct strct_arr[MAX];
Run Code Online (Sandbox Code Playgroud)

MAX宏在哪里是可配置值,是18的倍数(18或36或54等等......它可能达到18*n次).

我必须用{0xff,0,0}初始化结构.那么,如何my_struct strct_arr[MAX];使用我的初始值初始化整个结构数组而不使用任何类型的循环.

我期待输出如下:

my_struct strct_arr[MAX]={
    {0xff,0,0},
    {0xff,0,0},
    {0xff,0,0},
    {0xff,0,0},
    …
};
Run Code Online (Sandbox Code Playgroud)

但是,如果不知道MAX价值,如何初始化它?

小智 4

GCC 对此有扩展。尝试这个

#define MAX 18
my_struct strct_arr[MAX]={ [0 ... (MAX - 1)] = {0xff,0,0}};
Run Code Online (Sandbox Code Playgroud)

检查https://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/Designated-Inits.html