C 语言"Dot initialization syntax"



我发现一些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,
};

首先,我不知道这叫什么。这叫什么?也许是&;。initialisation syntax&;就像我在题目中提到的那样?我以前没有遇到过这种情况,所以我不知道如何描述。

其次,在编译时这是有效的C代码,但是这是什么C方言,什么时候引入的?(这是C11的新功能吗?)

第三,如果省略了结构体的某些成员,这些成员是否初始化为零?如果没有,是否有方法初始化该结构体,使省略的成员为零。

(例如spi_ios_transfer也包含一个字段cs-change,这里省略了)

最后,这在c++中也是允许的吗?它是否适用于c++类?

首先,我不知道这是什么。

指定初始值设定项

其次,当它编译时,这是有效的C代码,但是这是什么C方言,什么时候引入的?(这是C11的新功能吗?)

C99及以后

第三,如果省略了结构体的某些成员,这些成员是否初始化为0。

是的

最后,这在c++中也是允许的,它是否适用于c++类?

在c++ 20中引入

最新更新