Итак, у меня есть эти 2 структуры:
typedef struct item {
const char *label;
int value;
} Item;
typedef struct item_coll {
size_t length;
Item items[];
} ItemColl;
И я хочу сделать это:
int main() {
Item a = {"A", 10};
Item b = {"B", 20};
Item c = {"C", 30};
Item items[] = {a, b, c};
size_t length = sizeof(items)/sizeof(items[0]);
ItemColl *column = malloc (sizeof(column) + length * sizeof(Item));
column -> length = length;
column -> items = items;
printf("%ld\n", column -> length);
return 0;
}
Но я получаю ошибку «Неправильное использование элемента гибкого массива» здесь:
column -> items = items;
Насколько я знаю, я выделяю необходимое пространство, поэтому не понимаю, в чем проблема.
Я видел еще 2 сообщения с таким названием, но ни одно из них не решает мою проблему, так как я попробовал ответы на эти вопросы.