2009-04-17 6 views
1

Quelqu'un peut-il confirmer que les structures imbriquées C ne sont pas autorisés dans l'objectif C.iPhone/Objective C structures imbriquées C

Et par struct imbriqués, je veux dire ce qui suit:

struct Tex2D 
{ 
    GLfloat u; 
    GLfloat v; 
}; 

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

Je semble avoir toutes sortes de problèmes à compiler ceci. Il est difficile de trouver une documentation sur ce sujet car c'est un code c parfaitement valide.

Vive Rich

+0

Peut-être que le code * semble * parfait valide, indiquant que vous n'avez pas fait C depuis longtemps, ou reformuler la question empêcherait les votes vers le bas. Dans l'ensemble, c'est une bonne question de programmation, ça ne semble pas être le cas au début de l'explication. :-) –

Répondre

10

Ce que vous avez là n'est pas un code C valide. Rappelez-vous, en C, lorsque vous déclarez une variable struct, vous devez vous référer explicitement comme une struct, comme ceci:

struct StructType myStruct; 

La façon la plus commune que je l'ai vu résoudre est de regrouper la déclaration de struct un typedef, comme ceci:

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

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

de cette façon, vous pouvez alors créer de nouvelles variables struct sans avoir à utiliser le mot-clé struct.

+0

Merci, bon sang je n'ai pas fait de C depuis environ 10 ans ... Je suis tellement habitué au C++. Merci. Les deux réponses sont correctes mais je ne peux que les cocher. J'ai coché celui-ci car c'était plus bavard. – Rich

5

Tout comme en C, vous devez utiliser le mot-clé struct lors du référencement struct. :-)

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

Travaux!

+0

Merci, bon sang je n'ai pas fait de C depuis environ 10 ans ... Je suis tellement habitué au C++. Merci. Les deux réponses sont correctes mais je ne peux que les cocher. J'ai coché celui ci-dessous car c'était plus bavard. – Rich

Questions connexes