元素编号

元素编号

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位操作系统的设计与实现