读Linux代码的时候曾遇到过类似下面这种形式的结构体初始化:
static struct usb_driver usb_storage_driver = {
.owner = THIS_MODULE,
.name = “usb-storage”,
.probe = storage_probe,
.disconnect = storage_disconnect,
.id_table = storage_usb_ids,
};
上网查了一番,才知道原来这是C99新加的一个特性:指定初始化。那么,这个特性有什么用呢?有了它,我们就可以不用像从前那样必须按照顺序来初始化结构体的成员了:
struct Rectangle {
int x;
int y;
unsigned width;
unsigned height;
}struct Rectangle rect = { .width = 300, .height = 200 }
PS:
还有一种初始化数组的语法,可以指定只初始化数组中的某些元素:
int arr[10] = {
[0] = 1,
[5] = 4,
[3] = 7
}