以下是代码段:
typedef struct foo {
int i;
int o;
} foo;
int main() {
foo bar2 = {
.i = 42;
.o= 24;
};
foo bar1;
bar1.i = 42;
bar1.o = 24;
}
我正在尝试在声明中初始化变量bar2
,但它不起作用。但结构bar1
的初始化工作得很好。
可以有人告诉我为什么foo2
的初始化会给出一个SyntaxError吗?
答案 0 :(得分:4)
初始化元素必须用逗号分隔,而不是分号, 但是,虽然C(因为C99)支持指定的初始值设定项,但标准C ++不支持它。见this question。
你可以这样做:
foo bar2 = { 42, 24 };
某些C ++编译器可能支持这样一个指定的初始化列表,它来自C,作为扩展 - 在这种情况下语法将是:
foo bar2 = {.i = 42, .o= 24};