请解释一下“:”的用法以及结尾的“,”在此结构体初始化 C 代码中

发布于 2024-10-22 22:03:01 字数 178 浏览 1 评论 0原文

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

这是来自 uclinux 中的 mem.c 文件

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

this is from mem.c file in uclinux

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眉目亦如画i 2024-10-29 22:03:01

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

That's GNU-style initialization syntax; the open member is initialized to memory_open, the rest is left uninitialized. C99 uses a different syntax (.open = memory_open).

厌倦 2024-10-29 22:03:01

在 C 中,从一开始就允许在大括号括起来的初始值设定项中使用可选的尾随逗号。它在那里,以便您可以在初始化程序中使用统一的逗号放置

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

,例如,如果出现这种需要,这使得重新排列列表中的初始化程序变得更容易。您是否想使用它是个人喜好的问题。

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

In C the optional trailing comma was allowed in brace-enclosed initializers since the beginning of time. It is there so that you can use uniform comma placement in initializers like

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

This makes it easier, for example, to rearrange the initializers in the list, should such a need arise. Whether you want to use it or not is a matter of personal preference.

As for the : syntax, it is a GCC-specific extension as @geekosaur already explained. The corresponding functionality was standardized in C99 with a different syntax.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文