iPhone / Objective C вложенные структуры C - PullRequest
1 голос
/ 17 апреля 2009

Может ли кто-то подтвердить, что вложенные структуры C НЕ допускаются в задаче C.

И под вложенными структурами я имею в виду следующее:

struct Tex2D
{
    GLfloat u;
    GLfloat v;
};

// quad uv cords
struct TexQuad
{
    Tex2D   uv[4];
};

У меня, кажется, есть все виды проблем при компиляции. Трудно найти какую-либо документацию по этому вопросу, так как это совершенно правильный код c.

Приветствие Рич

Ответы [ 2 ]

10 голосов
/ 17 апреля 2009

То, что у вас есть, не является допустимым кодом C. Помните, что в C, когда вы объявляете переменную структуры, вы должны явно ссылаться на нее как на структуру, например:

struct StructType myStruct;

Самый распространенный способ решения этой проблемы - связать объявление структуры с помощью typedef, например:

typedef struct _Tex2D
{
    GLfloat     u;
    GLfloat     v;
} Tex2D;

// quad uv cords
typedef struct _TexQuad
{
    Tex2D       uv[4];
} TexQuad;

Таким образом, вы можете создавать новые переменные структуры без использования ключевого слова struct.

5 голосов
/ 17 апреля 2009

Как и в C, вы должны использовать ключевое слово struct при ссылке на структуры. : -)

// quad uv cords
struct TexQuad
{
    struct Tex2D       uv[4];
};

Works!

...