2009-04-17 19 views
1

誰かがネストされたC構造体は、対物C.iPhone/Objective CのネストされたC構造体

に許可され、ネストされた構造体で、私は次のことを意味していないことを確認することができます。

struct Tex2D 
{ 
    GLfloat u; 
    GLfloat v; 
}; 

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

私はこれをコンパイルするすべての種類の問題を抱えているようです。これは完全に有効なCコードなので、これに関するドキュメントを見つけるのは難しいです。

乾杯 リッチ

+0

おそらくコード*が完璧なものであると言います。あなたは長い間Cをやっていないと言っているのですが、質問を言い換えると投票が妨げられるでしょう。全体的に、それは良いプログラミングの質問です、それはちょうど説明から最初のようには思われません。 :-) –

答えて

10

有効なCコードがありません。私はこれを解決見た中で最も一般的な方法はと構造体宣言をバンドルすることである

struct StructType myStruct; 

:このように、あなたは構造体変数を宣言するとき、あなたは明示的に構造体としてそれを参照する必要があり、Cには、覚えておいてくださいtypedefが、このように:

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

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

そのように、あなたがしてstructキーワードを使用することなく、新しい構造体の変数を作成することができます。

+0

ありがとう、私は約10年間でCをやっていない...私はC++に慣れてきた。ありがとう。両方の答えは正しいですが、私はそれらのことに目を向けることができます。私はこれをもっと冗長にしたので、これをチェックした。 – Rich

5

Cにあなたは構造体を参照するときに、キーワード構造体を使用する必要が好きです。 :-)

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

Works!

+0

おかげさまで、私は約10年でCをやっていません...私はC++に慣れてきました。ありがとう。両方の答えは正しいですが、私はそれらのことに目を向けることができます。私はそれをもっと冗長にして下の方にチェックしました。 – Rich