Следующие причины вызывают ошибки компилятора в коде, показанном в вопросе:
- Использование
sizeof(struct A)
в то время как struct A
не определено полностью. - Использование
a->a
, a->b
, a->c
и a->d
, в то время как struct A
не полностью определено. - Использование
new.a
, поскольку new
объявлен указателем в struct Node *new
.
Последнее из них может привести к сообщению об ошибке, указанному в вопросе, о том, что ожидается структура или объединение.Строка, в которой вопрос задает это сообщение, a->c= x[3];
, не должна, так как ни один оператор, ожидающий структуру или объединение, не используется в этом операторе, кроме ->
, который правильно получает указатель на структуру (хотя и не полностью определенную).
Поэтому я подозреваю, что в вопросе был неверно указан код получения сообщения или местоположение сообщения.
Кроме того, char *x[6]; … x[6] = "b";
неверно;когда массив определен с [6[
, его действительные индексы имеют значение от 0 до 5, а не 6.