linux内核结构体的使用指定初始化(点运算符)
这种方式称为指定初始化(designated initializer)。
如,/usr/src/linux-2.6.32.5/drivers/usb/usb-skeleton.c
static struct usb_driver usb_storage_driver = {
.owner = THIS_MODULE,
.name = \"usb-storage\",
.probe = storage_probe,
.disconnect = storage_disconnect,
.id_table = storage_usb_ids, };
它源自ISO C99标准。采用这种方式的优势就在于由此初始化不必严格按照定义时的顺序。
例如:
struct book {
char title[MAXTITL];
char author[MAXAUTL];
float value;
};
假如只初始化book结构的成员value,可以这样做:
struct book surprise = { .value = 10.99 };
可以按照任意的顺序使用指定初始化项目:
struct book gift = {
.value = 25.99,
.author = \"James Broadfool\",
.title = \"Rue for the Toad\"
};
觉得这种方法很灵活。
转:http://blog.csdn.net/bonnshore/article/details/7850382