数组类型的元素类型不完整

时间:2011-08-05 14:17:18

标签: c

我正在尝试这样做:

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

但编译器不会让我。 :(这个声明怎么了?谢谢你的帮助!

1 个答案:

答案 0 :(得分:14)

要么:


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

OR


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

在C中,struct名称位于与typedef不同的名称空间中。

当然,您也可以使用typedef struct coords { float x; float y; } coords;并使用struct coordscoords。在这种情况下,您选择的内容无关紧要,但对于自引用结构,您需要一个结构名称:

struct list_node {
    struct list_node* next; // reference this structure type - need struct name    
    void * val;
};