具有默认初始化的 C 结构定义?

C structure definition with default initialization?

很抱歉问这个问题,因为我确定它已经得到回答,但我在过去 30 分钟内尝试搜索不同的术语,但没有找到与此类似的定义。

struct {
    volatile uint8_t tail;
    uint8_t buf[128];
} uart = {0,0};

上面结构体的定义,我不明白最后的"={0,0}"是什么意思

这个叫什么?它的目的是什么?

如果我敢猜测,它是某种默认值初始值设定项,猜测它会在定义“uart”类型的新变量时将 tail 设置为 0 并且数组填充为 0。这可能是某些问题的重复,我错过了它所需的关键字。

编辑: 只是有另一个想法......这是某种内联结构定义并初始化一个名为 uart 的变量吗? IE,它没有定义一个名为 uart 的结构,而是定义了一个名为 uart 的变量,内联结构定义,然后设置值。非常不寻常,如果是的话。我从来没有想过内联结构定义。

C 中没有默认初始化,因为 C 对象没有构造函数。

唯一的例外:未初始化的静态存储持续时间对象已归零。

uart = {0,0};

它用两个零隐式初始化 uart 变量。最好写成{0, {0,}},因为第二个成员是数组。