【发布时间】:2016-02-19 06:25:39
【问题描述】:
在 Linux 内核中,我看到一个结构数组的声明,如下所示
struct SomeStructName [] ={
[SOMEWEIRD_NAME] = {
.field1 = "some value"
},
[SOMEWEIRD_NAME2] = {
.field1 = "some value1"
},
}
我从未见过这样的声明,特别是我无法弄清楚[SOMEWEIRD_NAME] 的含义以及使用它的原因。
【问题讨论】:
-
这是designated initializers 的 GNU 扩展。
-
@Kninnug 这不是 GNU 扩展,它是有效的 C99
-
@ouah 我以为 C99 只允许
.field语法。看来我错了,尽管 GCC 确实有一些标准中没有的额外语法。 -
@Kninnug 范围语法(例如,
[0..255])是 GNU 扩展