我尝试使用以下代码将对象动态分配为结构的成员:
#include <stdlib.h>
#define width 4
struct foo{
int* p1 = malloc(sizeof(*p1) * width);
};
但是clang和gcc编译器都抛出错误:
error: expected ':', ',', ';', '}' or '__attribute__' before '=' token
当我尝试编译代码时;这里是链接:https://godbolt.org/z/-Sy6CK。
我的问题:
答案 0 :(得分:4)
或者这个:
struct foo{
int* p1;
};
int main()
{
struct foo bar = {.p1 = malloc(sizeof(*bar.p1) * width)};
}
或
int main()
{
struct {
int* p1;
} bar = {.p1 = malloc(sizeof(*bar.p1) * width)};
}
答案 1 :(得分:3)
您想要这个:
#include <stdlib.h>
#define width 4
// declaration, you can't do initialisation here
struct foo{
int* p1;
};
int main()
{
struct foo bar;
bar.p1 = malloc(sizeof(*bar.p1) * width);
}