像结构一样初始化 typedef
Initialization of a typedef like a struct
这是一个代码片段:
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
,但没有成功。但是 struct bar1
的初始化工作得很好。
谁能告诉我为什么 foo2
的初始化会出现 SyntaxError?
初始化元素必须用逗号分隔,而不是分号,
然而,虽然 C(自 C99 起)支持指定的初始化程序,但标准 C++ 不支持它。参见 this question。
你可以这样做:
foo bar2 = { 42, 24 };
一些 C++ 编译器可能支持这种来自 C 的指定初始化列表作为扩展——在这种情况下,语法将是:
foo bar2 = {.i = 42, .o= 24};
这是一个代码片段:
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
,但没有成功。但是 struct bar1
的初始化工作得很好。
谁能告诉我为什么 foo2
的初始化会出现 SyntaxError?
初始化元素必须用逗号分隔,而不是分号, 然而,虽然 C(自 C99 起)支持指定的初始化程序,但标准 C++ 不支持它。参见 this question。
你可以这样做:
foo bar2 = { 42, 24 };
一些 C++ 编译器可能支持这种来自 C 的指定初始化列表作为扩展——在这种情况下,语法将是:
foo bar2 = {.i = 42, .o= 24};