您的位置:首页 > 其它

designated initializer:一种特殊的结构体初始化方法

2009-07-15 22:27 218 查看
最近在看usb驱动的代码时,看到这么一段初始化代码

static struct usb_driver usb_storage_driver = {
.name =        "usb-storage",
.probe =    storage_probe,
.disconnect =    storage_disconnect,
#ifdef CONFIG_PM
.suspend =    storage_suspend,
.resume =    storage_resume,
.reset_resume =    storage_reset_resume,
#endif
.pre_reset =    storage_pre_reset,
.post_reset =    storage_post_reset,
.id_table =    storage_usb_ids,
.soft_unbind =    1,
};


这种初始化结构体的方法以前没有见过。
这是C99标准里新加入的一种特殊的初始化方法,叫做指定初始化(designated initializer)。
以这种方式进行初始化可以不按照固定的顺序进行,例如:
struct point { int x, y; };
和下面的初始化,
     struct point p = { .y = yvalue, .x = xvalue };
等价于:
     struct point p = { xvalue, yvalue };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struct table c