请在此结构初始化C代码中解释':'和尾随','的使用

时间:2011-03-17 01:21:44

标签: c linux uclinux

static struct file_operations memory_fops = {
    open:       memory_open,    /* just a selector for the real open */
};

这是来自uclinux的mem.c文件

2 个答案:

答案 0 :(得分:6)

这是GNU风格的初始化语法; open成员初始化为memory_open,其余成员未初始化。 C99使用不同的语法(.open = memory_open)。

答案 1 :(得分:3)

在C中,从一开始就允许在括号括起的初始值设定项中使用可选的尾随逗号。它就在那里,你可以在初始化器中使用统一的逗号位置,如

struct SomeStructType s = {
  value1,
  value2,
  value3,
};

例如,如果需要,可以更容易地重新排列列表中的初始化程序。是否要使用它是个人偏好的问题。

至于:语法,它是一个特定于GCC的扩展,正如@geekosaur已经解释过的那样。相应的功能在C99中使用不同的语法进行了标准化。