我的结构如下
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