typedef
はデータを宣言するものではなく、新たな識別子でデータを宣言できるようにするためのものです。typedef
の構文を次に示します。
typedef declaration;
typedef
の宣言部分の変数名が、新たな型名になります。次の例では、既存の型 egg とシンボル定数 DOZEN を使用して、eggbox という新たな型を定義しています。
typedef egg eggbox[DOZEN];
新たな型名で宣言した変数は、typedef
で変数として見た場合の型と同じ型を持ちます。したがって、次の 2 つの宣言は同じ型の変数 fresheggs: を宣言しています。
eggbox fresheggs; egg fresheggs[DOZEN];
typedef
に struct
、enum
、union
の定義が含まれるときは、同じ型を定義するのに、別のより望ましい構文が使用できます。一般に、typedef
は次の形式で指定します。
typedef <<struct, union, or enum definition>> identifier;
この形式から typedef
を取り去り、最後の識別子を struct
、enum
、union
のキーワードの後に置くこともできます。bool
型を宣言する 2 つの方法を次に示します。
typedef enum {/* typedef を使用 */ FALSE = 0, TRUE = 1 } bool; enum bool {/* 望ましい方法 */ FALSE = 0, TRUE = 1 };