C++ 像结构一样初始化typedef

C++ 像结构一样初始化typedef,c++,struct,typedef,C++,Struct,Typedef,以下是一段代码片段: 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的初始化会产生S

以下是一段代码片段:

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吗

初始值设定项元素必须用逗号而不是分号分隔, 然而,由于C99支持指定的初始化器,标准C++不支持它。看

你可以做:

foo bar2 = { 42, 24 };
<>一些C++编译器可能支持这样一个指定的初始化列表,它来自C,作为一个扩展——在这种情况下,语法将是:

foo bar2 = {.i = 42, .o= 24};

foo2?什么食物2?另外,指定的初始化器不是C++。抱歉,但是您忘了提到代码中的5个错误…对不起,我提到BAR2,…要编辑这个。你试图用C语法写C++,为什么?如果你想写C,那么写C。如果你想写C++,那么写C++。好的,谢谢,所以有两个错误:第一:我用逗号代替分号,用分号分隔。第二:我习惯了C而不是C++。但在这种情况下,我必须使用C++,我不知道这个初始化不被支持。非常感谢。