像struct一样初始化typedef

时间:2015-02-12 09:36:18

标签: 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的初始化会给出一个SyntaxError吗?

1 个答案:

答案 0 :(得分:4)

初始化元素必须用逗号分隔,而不是分号, 但是,虽然C(因为C99)支持指定的初始值设定项,但标准C ++不支持它。见this question

你可以这样做:

foo bar2 = { 42, 24 };

某些C ++编译器可能支持这样一个指定的初始化列表,它来自C,作为扩展 - 在这种情况下语法将是:

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