【发布时间】:2017-11-09 13:47:50
【问题描述】:
这个结构代表什么?第一个方括号[last_ds_type] 显示结构的数组。像[ds_1307] 这样的内方括号呢? .nvram_offset 和 .nvram_size 中的 . 是什么?
static struct chip_desc chips[last_ds_type] = {
[ds_1307] = {
.nvram_offset = 8,
.nvram_size = 56,
},
[ds_1308] = {
.nvram_offset = 8,
.nvram_size = 56,
},
[ds_1337] = {
.alarm = 1,
.century_reg = DS1307_REG_MONTH,
.century_bit = DS1337_BIT_CENTURY,
},
[ds_1338] = {
.nvram_offset = 8,
.nvram_size = 56,
},
[ds_1339] = {
.alarm = 1,
.century_reg = DS1307_REG_MONTH,
.century_bit = DS1337_BIT_CENTURY,
.trickle_charger_reg = 0x10,
.do_trickle_setup = &do_trickle_setup_ds1339,
},
[ds_1340] = {
.century_reg = DS1307_REG_HOUR,
.century_enable_bit = DS1340_BIT_CENTURY_EN,
.century_bit = DS1340_BIT_CENTURY,
.trickle_charger_reg = 0x08,
},
[ds_1388] = {
.trickle_charger_reg = 0x0a,
},
[ds_3231] = {
.alarm = 1,
.century_reg = DS1307_REG_MONTH,
.century_bit = DS1337_BIT_CENTURY,
},
[rx_8130] = {
.alarm = 1,
/* this is battery backed SRAM */
.nvram_offset = 0x20,
.nvram_size = 4, /* 32bit (4 word x 8 bit) */
},
[mcp794xx] = {
.alarm = 1,
/* this is battery backed SRAM */
.nvram_offset = 0x20,
.nvram_size = 0x40,
}
};
【问题讨论】:
-
那是指定的初始化器。
-
虽然这可能来自 Linux 设备驱动程序代码,但只有其中的实际标识符是特定于该上下文的。无论如何,您正在查看的是指定的初始化程序。它们指定在每个点初始化数组的哪个元素,以及每个 (
struct chip_desc) 数组元素的哪个成员。 -
@HolyBlackCat: 多么奇怪 - 最近一小时内指定初始化程序上的 C 标签上有两个问题;以前从未见过。
标签: c