Я попытался динамически выделить объект в качестве члена структуры с этим кодом:
#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 .
Мой вопрос:
Всего 2 ответа
Вы хотите это:
#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);
}
Или это:
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)};
}