ONC+ 開発ガイド

Typedef

typedef はデータを宣言するものではなく、新たな識別子でデータを宣言できるようにするためのものです。typedef の構文を次に示します。

typedef declaration;

typedef の宣言部分の変数名が、新たな型名になります。次の例では、既存の型 egg とシンボル定数 DOZEN を使用して、eggbox という新たな型を定義しています。

typedef egg eggbox[DOZEN];

新たな型名で宣言した変数は、typedef で変数として見た場合の型と同じ型を持ちます。したがって、次の 2 つの宣言は同じ型の変数 fresheggs: を宣言しています。

eggbox fresheggs;
 egg fresheggs[DOZEN];

typedefstructenumunion の定義が含まれるときは、同じ型を定義するのに、別のより望ましい構文が使用できます。一般に、typedef は次の形式で指定します。

typedef <<struct, union, or enum definition>> identifier;

この形式から typedef を取り去り、最後の識別子を structenumunion のキーワードの後に置くこともできます。bool 型を宣言する 2 つの方法を次に示します。

typedef enum {/* typedef を使用 */
   FALSE = 0,
   TRUE = 1
} bool;
enum bool {/* 望ましい方法 */
   FALSE = 0,
   TRUE = 1
}; 

最初の構文では宣言の最後まで見ないと新しい型名がわからないので、後の構文の方が望ましい方法です。