2016-05-26 7 views
-1

2つの構造体を定義したいとします。最初の構造体は型を持ち、もう1つは最初の型と同じ型になりたいとします。これはC99でも可能ですか?Cで既存のユーザー定義型をエイリアスと入力できますか?

例:

typedef struct { 
    fieldA; 
    fieldB; 
} typeA; 


struct B { 
    fieldA 
    fieldB 
}; 

typedef B A;

ないtypedefの場合は、これを行うための別のキーワード/方法はありますか?

編集:私がこれまでのフィードバックから判断して、可能な限り明確にされていなかったようだ

私の特定のシナリオが別のエイリアスを入力する必要がtypedefは構造体の定義である(私は非常に感謝しています!)構造体。

+1

余分な構造体は必要ありません。ちょうど 'typedef typeA B;はあなたが求めていることを(私が思う)しなければなりません。 –

+0

私は混乱しています。あなたのサンプルコードは、2つの構造体*型を宣言することを目的としています(構文的には正しいわけではありません)。これらの型を持つオブジェクトは宣言しません。あなたはstruct型のtypedefを書く方法を尋ねていますか? –

+0

struct型を宣言したら、それを型定義するかどうかにかかわらず、その型のオブジェクトを好きなだけ宣言することができます。 –

答えて

1

もちろんです!それはちょうどのようです:

#include <stdio.h> 

typedef int value_t; 
typedef value_t data_t; 

int main() 
{ 
    data_t i = 1; 
    printf("%d\n", i); 

    return 0; 
} 

あなたは好きなだけ何度もtypedefすることができます。

+0

OPが実際に求めようとしていることがわかっていないので、これが実際に質問に答えるかどうか不安です。しかし、何らかの理由で構造体が問題になっているとしても、int型ではなくtypedef型の構造体型を使用した方が良いでしょう。 –

+0

@JohnBollinger、うまくいけば私の編集は物事を明確にしましたか? – cbrad

+0

申し訳ありませんが、私はあなたの質問に誤解しました。 'typedef'が同じ名前の複数のものを欲しければ、それは*分かりやすい型エラー*を発生させることはできません。しかし、あなたは '* define * 'と'#undef'を使って複数回定義することができます。 – Wenfeng

関連する問題