通信用語の基礎知識 全国のICカードこれひとつ 戻る

通常PC用 / 人気 更新 今日 カテ
電子計算機 > 仕様・構造 > ソフトウェア > プログラミング言語 > 言語仕様 > 予約語・関数など
typedef
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS)
読み:タイプデフ
外語:typedef
品詞:名詞

C/C++の予約語の一つ。データ型に新しい名前を付ける時に用いる。

目次
概要

新しいデータ型を作り出すわけではない。あくまで別名を付けるだけである。

CおよびC++の標準では、標準として提供するtypedefの型名には_tサフィックスを付けている。

似たようなものに#defineがあるが、typedefとは解釈するプログラムが異なる。#defineはプリプロセッサーが解釈し、typedefはコンパイラーが解釈する。

なお、C++では、C++11以降はusingを使って別名定義が可能となっており、typedefは既に古くさい書き方となっている。

特徴
用例

例えば、整数を扱うデータ型SEISUを定義する。

typedef int SEISU;

SEISU型はint型と完全に同じ変数型となる。int型に代入してもされてもエラーにはならない。

int a = 1;
int b = 2;
SEISU c;
c = a + b;

別名を付けて、データ型を抽象化したい場合に有効である。

structなどをtypedefすることもできる。こうするとデータ型名を構造体と意識させずに利用させることができ、利便が高まる。

賛否

typedefの使用は避けるべきだと主張する者もいる。その理由として、typedefは実際のデータ型を隠蔽し、巨大な構造体でも単純な型と誤認して使用できてしまうため、などとする。

逆に、これは利点だと主張する者もいる。データ型を隠蔽することでデータのカプセル化向上に寄与する他、後からデータ型の仕様変更があっても、プログラムの変更が不要で、定義の部分だけを変えれば済む、などとしている。

CやC++の標準は、typedefを増やす方向である。

実用例

このデータ型の隠蔽は、実際にtime_tの仕様変更に有効に生かされている。

time_tは従来は32ビット長だったが、のちに64ビット長に伸ばされた。

もしtime_tというtypedefが無いなら、time関係の関数の引数をlong型からlong long型にすべて書き換える必要があり、影響は大きい。time_tがあったため、関数の定義や使い方は一切変えず、ヘッダーでの定義をlongからlong longに変えるだけで済んだのである。

リンク
用語の所属
C
C++
記憶クラス
関連する用語
_t
#define
using

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.03 (16-May-2019)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic