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中变量名前的点是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
Swiftui 中 init() 中变量前的下划线是啥意思?