typedef

弱い typedef

D 言語では, C の別名を付ける typedef に相当する alias と, 新しい型を定義する typedef の二つがある:

alias uint HWND;

C の typedef は弱い typedefだった. これは, コンパイラは実際には新しい型を定義 するのではなく, 同じ型を別の名前で扱えるようにするだけだったということ.

弱い typedef に対して, D 言語では新しい予約語 alias を用意している.

alias.d

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import std.stdio;

alias uint HWND;
/*
  D 言語の弱い typedef
*/

void main(){
  uint a = 1;
  HWND b = 2;

  writefln("uint a = %d", a);
  writefln("HWND b = %d", b);
}

alias.d の実行結果は:

[cactus:~/code_d/d_tuts]% ./alias
uint a = 1
HWND b = 2

強い typedef

一方, D 言語の typedef は強い typedef で.

コンパイラは実際に新しい型を作り出し, 元の型とは別の型として扱われる.

Table Of Contents

Previous topic

定数の型修飾子

Next topic

文字列