在Linux内核中常常看到如下结构体初始化方式:
struct nvm_tgt_type tt_pblk = {
.name = "pblk",
.version = {1, 0, 0},
.make_rq = pblk_make_rq,
.capacity = pblk_capacity,
.init = pblk_init,
.exit = pblk_exit,
.sysfs_init = pblk_sysfs_init,
.sysfs_exit = pblk_sysfs_exit,
};
于是,总结了一下结构体的初始化方式。
struct test {
int a;
int b;
char c;
char d;
};
方式一:定义时赋值,按照成员顺序赋值
struct test assign = {1, 2, 'a', 'b'};
方式二:定义后,逐个成员赋值
struct test assign;
assign.a = 1;
assign.b = 2;
assign.c = 'a';
assign.d = 'b';
方式三:定义时,乱序赋值
struct test assign = {
.a = 1,
.b = 2,
.c = 'a',
.d = 'b'
};
或
struct test assign = {
a:1,
b:2,
c:'a',
d:'b'
};
不过这种冒号的用法比较少