dot(。)在结构初始值设定项中是什么意思?

static struct fuse_oprations hello_oper = { .getattr = hello_getattr, .readdir = hello_readdir, .open = hello_open, .read = hello_read, }; 

我不明白这个C语法。 我甚至无法search,因为我不知道语法的名字。 那是什么?

这是一个C99function,允许您在初始化程序中通过名称来设置结构的特定字段。 在此之前,初始化程序只需包含所有字段的值,当然这仍然有效。

所以对于下面的结构:

 struct demo_s { int first; int second; int third; }; 

…您可以使用

 struct demo_s demo = { 1, 2, 3 }; 

…要么:

 struct demo_s demo = { .first = 1, .second = 2, .third = 3 }; 

…甚至:

 struct demo_s demo = { .first = 1, .third = 3, .second = 2 }; 

…虽然最后两个只适用于C99。

这些是C99的指定初始值设定项 。

它被称为designated initialisation (请参阅指定的初始化程序 )。 一个“初始化列表”,“每个” . '是一个“ designator ”,在这种情况下,它designator ' fuse_oprations '结构的特定成员来初始化由' hello_oper '标识符指定的对象。