【发布时间】:2021-10-16 14:13:36
【问题描述】:
我遇到了一些具有不寻常结构初始化语法的 C 代码。
struct spi_ioc_transfer tr = {
.tx_buf = (unsigned long)tx,
.rx_buf = (unsigned long)rx,
.len = ARRAY_SIZE(tx),
.delay_usecs = delay,
.speed_hz = speed,
.bits_per_word = bits,
};
首先,我不知道这叫什么。这被称为什么?也许是我在问题标题中建议的“点初始化语法”?没遇到过,不知道怎么形容。
其次,这是编译时有效的 C 代码,但是这是 C 的什么方言,它是什么时候引入的? (它是 C11 中的新功能吗?)
第三,如果结构的某些成员被省略,这些成员是否被初始化为零。如果没有,有没有办法初始化结构,使省略的成员为零。
(例如spi_ios_transfer还包含一个字段cs-change,此处已省略。)
最后这在 C++ 中是否也允许,它是否适用于 C++ 类?
【问题讨论】: