【C言語】Typedef
【C言語】
Typedef
Typedefとは
C/C++の便利な機能「typedef」。
「typedef」は、既存の型に新しい名前(別名)を付けるためのキーワード。
typedef は新しい型を作り出すのではなく、既存の型に新しい名前を付け加えるだけ。
「#define」とよく似た機能だが、#define はプリプロセッサにより解釈され、typedef はコンパイラにより解釈される。
また、単に同義語を作る#defineに比べ、typedef は「型」の同義語を作るという目的が明確である。
宣言場所を注意しないと、他の関数から見えないことがある。
typedefキーワードを用いると独自の型を定義する事ができる。
例えば構造体を宣言する時、「struct [構造体の型] 変数名;」と宣言するが、この構造体を何回も使う時は面倒なので、struct [構造体名]までを自分で作成した型とする事ができる。
自分で型を作成してしまえば、変数を宣言する時に、「[自分で宣言した型] 変数名;」で使用できる。
書式
typedef [定義したい既存型] 新しい型名;
typedefは#defineと異なり、コンパイル時に型チェックが行われる。
#defineは、コンパイル前に展開される。
typedefの例1
struct _test_t
{
int a;
int b;
};
//この構造体の型を宣言する
typedef struct _test_t test_t;
typedef unsigned int uint;
int main(int argc, char** argv)
{
uint c;
test_t test;//こんな感じで変数を宣言できる
test.a = 1;
test.b = 2;
c = test.a;
return(0);
}
typedefの例2
typedef struct { /* 構造体の型枠を定義して,同時にそれを型名 person_t として定義する */
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;
上記は、
typedef struct 構造体型名 person_t;
と同じ。