我有一个数组作为成员的结构,我试图使用箭头语法设置该数组.是)我有的:
typedef float Foo[3];
typedef struct {
Foo foo;
} Bar;
Bar* f() {
Bar* bar = malloc(sizeof(Bar));
bar->foo = {1.0, 1.0, 1.0};
return bar;
}
Run Code Online (Sandbox Code Playgroud)
gcc说:
error: expected expression before '{' token
Run Code Online (Sandbox Code Playgroud)
在线上 bar->foo = {1.0, 1.0, 1.0};
我不知道为什么这不起作用.提前致谢.
C99允许它通过复合文字:
Bar* f()
{
Bar* bar = malloc(sizeof(Bar));
if (bar)
*bar = (Bar){{1.0, 1.0, 1.0}};
return bar;
}
Run Code Online (Sandbox Code Playgroud)
"外部"curlies将结构封装为一个整体(如果struct具有其他成员,则将它们列在外部curlies中),"inner"curlies用于数组.