我有如下结构
typedef struct
{
int a;
int b;
int c;
} my_struct;
在另一个文件中,我已经声明了这个 my_struct
类型的变量,如下所示。
my_struct strct_arr[MAX];
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},
…
};
但是不知道MAX
值,如何初始化呢?
最佳答案
有 GCC 扩展。试试这个
#define MAX 18
my_struct strct_arr[MAX]={ [0 ... (MAX - 1)] = {0xff,0,0}};
检查 https://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/Designated-Inits.html
关于c - 如何初始化具有可变索引的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24277084/