struct中变量名前的点是啥意思?

Posted

技术标签:

【中文标题】struct中变量名前的点是啥意思?【英文标题】:What does a dot before the variable name in struct mean?struct中变量名前的点是什么意思? 【发布时间】:2011-11-21 05:19:50 【问题描述】:

查看linux内核源码,发现如下:

static struct tty_operations serial_ops = 
  .open = tiny_open,
  .close = tiny_close,
  .write = tiny_write,
  .write_room = tiny_write_room,
  .set_termios = tiny_set_termios,
;

我从未在 C 中见过这样的符号。 为什么变量名前有一个点?

【问题讨论】:

这用于以“新”C99 风格初始化结构成员(它们不是变量)(一些编译器甚至在 C99 发布之前就可能使用相同的格式)。 【参考方案1】:

这是一个Designated Initializer,它是为 C99 添加的语法。 相关摘录:

在结构初始化器中,指定要初始化的字段的名称 在元素值之前带有'.fieldname ='。例如,给定 如下结构,

struct point  int x, y; ; 

下面的初始化

struct point p =  .y = yvalue, .x = xvalue ; 

等价于

struct point p =  xvalue, yvalue ;

【讨论】:

【参考方案2】:

有时称为“指定初始化”。这是 C99 的新增功能,虽然它是 GNU 扩展已有一段时间了。

在列表中,每个. 命名要初始化的结构的一个成员,即所谓的指示符。

【讨论】:

以上是关于struct中变量名前的点是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

C#中变量名前的@符号是啥意思? [复制]

变量名前的下划线“_”对 Flutter 意味着啥

Swiftui 中 init() 中变量前的下划线是啥意思?

verilog 语句中有一个英文的点是啥意思 例如.rst(rst), 这个.是啥意思?

Java的类,方法,变量等等的默认修饰符是啥

C语言中的序列点是啥意思