static struct {
uint16_t foo;
uint16_t bar;
uint16_t foo1;
uint16_t bar1;
} foo_bar = {
foo : 1500,
bar : 1500,
foo1 : 1500,
bar1 : 1500
};
我想知道底部使用等号是什么,为什么有一个冒号,然后是一个值?
这种初始化形式似乎是 GNU 扩展。clang++
告诉我:
quirk.cpp:10:5: warning: use of GNU old-style field designator extension [-Wgnu-designator]
与此等效的标准(至少在 C99 中,而不是 C++ 中)是以下.field = <expr>
语法:
static struct {
uint16_t foo;
uint16_t trim2;
uint16_t foo1;
uint16_t bar1;
} elevon = {
.foo = 1500,
.trim2 = 1500,
.foo1 = 1500,
.bar1 = 1500
};
所以,这段代码所做的就是声明和初始化elevon
类型为匿名结构的变量,并用值初始化它(它的成员)。