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
};