型定義の指定子
typedef の宣言はスコープ内で宣言 型 の 宣言の 部分指定された型のシノニムな名前を生成します。
typedef type-declaration synonym;
解説
typedef 宣言または関数の構築に既に言語で定義されている型や宣言した型のもっとわかりやすい名前を使用できます。型定義の名前は変更されますが実装の詳細をカプセル化することができます。
クラス とは対照的にstruct 共用体 と enum の宣言typedef の宣言は新しい型がありません —既存の型の新しい名前を指定します。
型定義の名前は通常の識別子で 名前空間 を共有します。したがってプログラムが同じ名前で型定義の名前とローカル スコープ識別子を持つことができます。
詳細については、次のトピックを参照してください。
使用例
// typedef_specifier1.cpp
typedef char FlagType;
int main()
{
}
void myproc( int )
{
int FlagType;
}
ローカル スコープ識別子または同じスコープまたは内部スコープの構造体または共用体のメンバーを宣言する場合型定義と同じ名前で宣言する場合型指定子を指定する必要があります。次に例を示します。
typedef char FlagType;
const FlagType x;
識別子の FlagType の名前構造体のメンバーを再利用するにはまたは共用体のメンバーは型指定する必要があります :
const int FlagType; // Type specifier required
示すだけではありません。
const FlagType; // Incomplete specification
FlagType が型の一部であるのにかかるため再ない識別子。この宣言は無効な宣言などに設定されます。
int; // Illegal declaration
関数ポインターおよび配列型を含む型定義の型を宣言できます。定義に宣言と同じ表示できる限り構造体または共用体の型を定義する前に構造体または共用体型にポインター型定義の名前を宣言できます。
例
typedef の宣言の 1 つがを使用すると宣言に均一で圧縮します。次に例を示します。
typedef char CHAR; // Character type.
typedef CHAR * PSTR; // Pointer to a string (char *).
PSTR strchr( PSTR source, CHAR target );
typedef unsigned long ulong;
ulong ul; // Equivalent to "unsigned long ul;"
同じ変数宣言で基本クラスと派生型を指定するには typedef を使用するにはコンマを含む宣言を分離することができます。次に例を示します。
typedef char CHAR, *PSTR;
次の例では値を返し2 ビットの整数の引数を受け取る関数の型 DRAWF を要約したものです :
typedef void DRAWF( int, int );
typedef の上記のステートメントの後に宣言
DRAWF box;
宣言と等価です。
void box( int, int );
typedef はstruct とユーザー定義型を宣言し名前をに結合するには :
// typedef_specifier2.cpp
#include <stdio.h>
typedef struct mystructtag
{
int i;
double f;
} mystruct;
int main()
{
mystruct ms;
ms.i = 10;
ms.f = 0.99;
printf_s("%d %f\n", ms.i, ms.f);
}