Тип массива имеет неполный тип элемента - PullRequest
5 голосов
/ 05 августа 2011

Я пытаюсь сделать это:

typedef struct {
    float x;
    float y;
} coords;
struct coords texCoordinates[] = { {420, 120}, {420, 180}};

Но компилятор не позволит мне. :( Что не так с этой декларацией? Спасибо за вашу помощь!

1 Ответ

14 голосов
/ 05 августа 2011

Либо выполните:


typedef struct {
    float x;
    float y;
} coords;
coords texCoordinates[] = { {420, 120}, {420, 180}};

ИЛИ


struct coords {
    float x;
    float y;
};
struct coords texCoordinates[] = { {420, 120}, {420, 180}};

В C struct имена находятся в другом пространстве имен, чем typedef s.

Конечно, вы также можете использовать typedef struct coords { float x; float y; } coords; и использовать struct coords или coords.В этом случае не имеет значения, что вы выберете, но для самообращающихся структур вам нужно имя структуры:

struct list_node {
    struct list_node* next; // reference this structure type - need struct name    
    void * val;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...