【问题标题】: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 发布之前就可能使用相同的格式)。

标签: c linux kernel


【解决方案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 扩展已有一段时间了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      相关资源
      最近更新 更多