struct 是内核源代码中的声明或定义还是某种类型的面向对象的行为

struct is it declaration or defination or some type of Object Oriented behavior in kernel source

在 r8169_main.c 中 linux 内核源代码中有一个像这样的结构

#define KBUILD_MODNAME "foo"

static struct pci_driver rtl8169_pci_driver = {
    .name       = KBUILD_MODNAME,
    .id_table   = rtl8169_pci_tbl,
    .probe      = rtl_init_one,
    .remove     = rtl_remove_one,
    .shutdown   = rtl_shutdown,
    .driver.pm  = pm_ptr(&rtl8169_pm_ops),
};

我喜欢在第一个成员 .name 中使用,但没有指定数据类型,并且在 name 之前有 .,例如 .name = KBUILD_MODNAME, 它叫什么。这个名称成员是否在其他地方定义了这个静态结构是什么意思我以前没有见过这种类型的结构。任何人都可以告诉这是什么,它甚至在结构声明中分配了一个值吗???

我也可以创建这种结构的数组吗?

what is it called.

name 是结构 struct pci_driver.

成员

初始化形式称为指定初始化.name = something 部分是 代号 .

is this name member defined somewhere else

是的,在include/linux/pci.h

what this static struct means I did not seen this type of struct before

定义了 类型 struct pci_driver 的变量 rtl8169_pci_driverstatic 关键字修改 变量 生命周期 - 这意味着该变量在整个程序期间都有效。

static struct pci_driver rtl8169_pci_driver = {...}
                                            ^^^^^^^ - initialization
                         ^^^^^^^^^^^^^^^^^          - variable name
       ^^^^^^^^^^^^^^^^                             - variable type
^^^^^                                               - storage specifier
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^          - variable declaration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - variable definition

研究https://en.cppreference.com/w/c/language/declarations https://en.cppreference.com/w/c/language/struct_initialization https://en.cppreference.com/w/c/language/storage_duration

can I also create array of this type of struct?

您可以创建 struct pci_driver 个数组。

static struct pci_driver example_array[20] = {
   { .name = initilization_for_first_element, ... },
   { .name = initilization_for_second_element, ... },
   ... etc.
};