Ожидается структура или объединение - PullRequest
0 голосов
/ 30 апреля 2020

Этот код приводит к ошибке struct or union expected:

void doSomething(Animation* anim) {
    anim->quad.x = anim.x * anim.currFrame;
}

anim.quad - это Rectangle со следующим объявлением

typedef struct Rectangle {
    float x;
    float y;
    float width;
    float height;
} Rectangle;

Определение Animation:

typedef struct Animation {
    int currFrame;
    int framesCount;
    int x;
    int y;
    int width;
    int height;
    Texture2D image;
    Rectangle quad;
    Color tint;
} Animation;

Точное сообщение об ошибке:

animate.c:44: error: struct or union expected

1 Ответ

3 голосов
/ 30 апреля 2020

Обратите внимание, что anim - это указатель на Animation, а не объект Animation. Это означает, что если вы хотите выбрать поле из Animation, на которое указывает anim, вам нужно использовать оператор -> вместо оператора .. Чтобы исправить ошибку, измените

anim->quad.x = anim.x * anim.currFrame;

на

anim->quad.x = anim->x * anim->currFrame;

В более общем случае, если вы получаете это сообщение об ошибке, проверьте, не смешиваете ли вы . и ->.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...