内核编程和奇怪的结构

问题描述

linux/fs.h中,我发现了一个奇怪的结构file_operations

struct file_operations fops = {
    read: device_read,write: device_write,open: device_open,release: device_release
};

我的问题是这种赋予价值的名称是什么?

解决方法

来自 https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html

2.4.2.3初始化结构成员

初始化成员的另一种方法是指定名称 成员进行初始化。这样,您可以初始化任何成员 排序,甚至不进行初始化。有 您可以使用两种方法。第一种方法在C99和 作为GCC中的C89扩展:

struct point first_point = { .y = 10,.x = 5 };

您也可以省略 句点,并使用冒号代替“ =”,尽管这是GNU C 扩展名:

struct point first_point = { y: 10,x: 5 };

所以这等同于

struct file_operations fops = {
    .read = device_read,.write = device_write,.open = device_open,.release = device_release
};