我发现一些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中引入