点击(此处)折叠或打开
- struct device my_dev =
- {
- .bus = &my_bus_type,
- .parent = &my_bus,
- .release = my_dev_release,
- };
上面的这种赋值方式成为指定初始化(designated initializer)。源自ISO C99标准。
C Primer Plus有比较详细的描述,如下:
已知一个结构体定义:
点击(此处)折叠或打开
struct book
{
char title[MAXTITL];
char author[MAXAUTL];
float value;
};
{
char title[MAXTITL];
char author[MAXAUTL];
float value;
};
例如,只初始化book结构体中的成员value,可以这样做:
struct book a = {.value = 10.99};
可以按照任意的顺序使用初始化项目:
点击(此处)折叠或打开
- struct book gift =
- {
- .value = 25.90,
- .author = "Li Cong",
- .title = "Love Linux",
- };
点击(此处)折叠或打开
struct book gift =
{
.value = 18.90,
.author = "Li Cong",
20.0
};
{
.value = 18.90,
.author = "Li Cong",
20.0
};
注意:
1. 结构体指定初始化时,用到的就是点运算符加变量名,不许要指明类型,程序会自动匹配。
2. 右边的值类型尽量要匹配左边的类型。
3. 初始化时,变量之间可以用逗号分开,也可以用分号分开。
4. 整个结构体外边不要忘记分号。
内核采用这种方式的原因在于初始化时,不必严格按照定义时的顺序,这带来了极大的灵活性。
参考自:http://blog.sina.com.cn/s/blog_6716ec110100yifz.html