Content #
标准C语言规定数组和结构体必须按照固定顺序对成员(或元素)进行初始化赋值。GNU C语言为使数组和结构体初始化更加自由,特意放宽了此限制,使得数组可以在初始化期间借助下标对某些元素(元素可以是连续的或者不连续的)进行赋值,并在结构体初始化过程中允许使用成员名直接对成员进行赋值。
与此同时,GNU C语言还允许数组和结构体按照任意顺序对成员(或元素)进行初始化赋值。以下是两者的初始化实例:
unsigned char data[MAX] =
{
[0]=10,
[10 ... 50]=100,
[55]=55,
};
struct file_operations ext2_file_operations=
{
open:ext2_open,
close:ext2_close,
};
Linux 2.6以后的内核源码已经开始使用上述初始化扩展。读者在编写Linux驱动时,推荐采用以下初始化方式:
struct file_operations ext2_file_operations=
{
.read=ext2_read,
.write=ext2_write,
};
From #
一个64位操作系统的设计与实现