翻訳と辞書
Words near each other
・ Type-Moon
・ Type-moon
・ type-specific antigen
・ Type-Zero
・ TYPE.90
・ TYPE02
・ Type1
・ TYPE90
・ TYPE:WILD
・ typecast
・ Typedef
・ typeface
・ TypeMatrix
・ TYPEMOON
・ TypeMoon
・ Typemoon
・ TypePad
・ Typepad
・ TYPES
・ TypeScript


Dictionary Lists
翻訳と辞書 辞書検索 [ 開発暫定版 ]
スポンサード リンク

Typedef : ウィキペディア日本語版
Typedef

typedef(タイプデフ)は、プログラミング言語CC++キーワードである。これはデータ型に新しい名前(エイリアスシノニム)をつけるために使用される。プログラマが容易にソースコードを理解できるようにすることが目的である。
== 使用例 ==

一つのコード例:

int coxes;
int jaffa;
...
coxes++;
...
if (jaffa == 10)
...

別のコード例:

typedef int Apples;
typedef int Oranges;
Apples coxes;
Oranges jaffa;
...
coxes++;
...
if (jaffa == 10)
...

両方のコードの処理内容は同じである。2つ目の例でtypedefを使ったことで、何が行われているかを容易に理解することが出来る。すなわち、一つの変数はリンゴ(Apples)に関する情報を含み、もう一つの変数がオレンジ(Oranges)に関する情報を含んでいることがわかる。
別のコード例:

struct var ;

ここでは、ユーザ定義の型''var''が定義されている。''var''型の変数を作るために、C言語では以下のコードが必要である:

struct var a;

この例の最後に、以下の行を追加してみる:

typedef struct var newtype;

これにより、''var''型の変数を作るためには、以下のコードで十分となる:

newtype a;

同じことは、以下のコードでも行うことができる:

typedef struct var newtype;

構造体のタグ名を省略することもできる:

typedef struct newtype;

typedefは、自己参照構造体へのポインタの作成を簡単にすることも出来る。以下にコード例を示す:

typedef struct Node_tag Node;
struct Node_tag ;

通常、ポインタに割り当てるそれぞれの変数の前にアスタリスクを記述する必要がある:

Node
*startptr,
*endptr,
*curptr,
*prevptr, errptr,
*refptr;

プログラマはerrptrがポインタ型Node
*
であることを想定しているが、Typoによりerrptrは値型Nodeであると定義されてしまっている。これは微妙な構文エラーを引き起こす。
Node
*
型を定義することは、より良いことである。以下のコードがその例である:

typedef Node
*NodePtr;
NodePtr startptr, endptr, curptr, prevptr, errptr, refptr;

これにより、errptrを含めて全ての変数がNode
*
型であることが保証される。
関数へのポインタを利用する場合も typedef を利用することで可読性を向上できる可能性がある:

#include
typedef int binary_operator_t(int, int);
static int add(int a, int b)
int main(int argc, char
*argv;
int main(int argc, char
*argv[])

なお、以下のようなコードに対する動作は未定義となる。下線から始まる識別子は予約済み識別子であり、それを宣言または定義した場合は動作未定義とされているからである。

typedef struct _Foo FOO;

C++の構造体宣言では、潜在的にtypedefが定義される。つまり、typedefキーワードを明示的に使わなくとも、データ型は直ちに(struct varではなく)varで指定することができる。
C++ではクラス内部でtypedefを使用することで、クラス スコープのシノニムを定義することができるため、テンプレートを使用したジェネリックプログラミングダックタイピングに都合がよい。C++標準ライブラリのSTLの実装では、このテクニックが利用されている。

抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)
ウィキペディアで「Typedef」の詳細全文を読む




スポンサード リンク
翻訳と辞書 : 翻訳のためのインターネットリソース

Copyright(C) kotoba.ne.jp 1997-2016. All Rights Reserved.