现在的位置: 首页 > 综合 > 正文

linux内核结构体的使用指定初始化(点运算符)

2013年08月21日 ⁄ 综合 ⁄ 共 610字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.