デフォルトでは、dtrace -s または dtrace -P、-m、-f、-n、-i などを指定してコンパイルした D プログラムは、D コンパイラが提供する最新の D プログラミングインタフェースバージョンに結合されます。現在の D プログラミングインタフェースのバージョンを確認するには、dtrace -V コマンドを実行します。
$ dtrace -V dtrace: Sun D 1.0 $ |
特定のバージョンの D プログラミングインタフェースに結合したい場合は、適切なバージョン文字列に version オプションを設定します。その他の DTrace オプションと同じく (第 16 章オプションとチューニング可能パラメータを参照)、バージョンオプションを設定するときは、コマンド行で dtrace -x を実行します。
# dtrace -x version=1.0 -n 'BEGIN{trace("hello");}' |
#pragma D オプション構文を使って、D プログラムソースファイルにオプションを設定することもできます。
#pragma D option version=1.0 BEGIN { trace("hello"); }
#pragma D option 構文を使ってバージョン結合を要求する場合は、この指令を D プログラムファイルの最上部、その他の宣言やプローブ節よりも前に置く必要があります。バージョン結合引数が有効なバージョン文字列でない場合、または D コンパイラから提供されていないバージョンを参照している場合、エラーメッセージが出力され、コンパイルは失敗します。このため、バージョン結合機能を使えば、古いバージョンの DTrace 上で D スクリプトが実行された場合に、わかりやすいエラーメッセージを出して失敗させることもできます。
D コンパイラは、プログラムの宣言や節をコンパイルする前に、インタフェースのバージョンに合った D 型、関数、定数、およびトランスレータから成るセットを、コンパイラ名前空間にロードします。したがって、プログラム内で定義されている変数、型、およびトランスレータに加えて、このプログラムからアクセスできる識別子、型、およびトランスレータから成るセットも、ユーザーが指定したバージョン結合オプションによって制御されます。バージョン結合されていると、プログラムのソースコード内の宣言と矛盾する (したがってコンパイルエラーの原因となる) 識別子やトランスレータの定義が含まれるような新しいインタフェースが、D コンパイラによってロードされることはありません。将来のバージョンの DTrace が提供するインタフェースと矛盾しない識別子名を選択する方法については、「識別子名とキーワード」を参照してください。