缺省情况下,使用 dtrace -s 编译或使用 dtrace -P、-m、-f、-n 或 -i 命令行选项指定的任何 D 程序都会绑定到 D 编译器提供的 D 编程接口的最新版本。您可以使用 dtrace -V 选项确定 D 编程接口的当前版本:
$ dtrace -V dtrace: Sun D 1.0 $ |
如果要与 D 编程接口的特定版本建立绑定,可将 version 选项设置为相应的版本字符串。与其他 DTrace 选项(请参见第 16 章)类似,您可以使用 dtrace -x 在命令行上设置版本选项:
# dtrace -x version=1.0 -n 'BEGIN{trace("hello");}' |
或者使用 #pragma D option 语法在 D 程序源文件中设置该选项:
#pragma D option version=1.0 BEGIN { trace("hello"); }
如果您使用 #pragma D option 语法请求版本绑定,则必须将该指令放在 D 程序文件的顶部,位于任何其他声明和探测子句前面。如果版本绑定参数为无效的版本字符串,或引用了 D 编译器未提供的版本,则会生成相应的错误消息,并且编译将会失败。因此,您也可借助版本绑定功能,使在 DTrace 旧版本上执行 D 脚本失败,并生成直观的错误消息。
编译程序声明和子句之前,D 编译器会将相应接口版本的 D 类型、函数、常量和转换器集装入编译器名称空间。因此,指定的任何版本绑定选项仅控制对程序可见的标识符、类型和转换器集,以及程序定义的变量、类型和转换器。版本绑定可防止 D 编译器装入可能会定义与程序源代码中的声明冲突,并因此产生编译错误的标识符或转换器的新接口。有关如何选择不会与 DTrace 将来版本提供的接口冲突的标识符名称的技巧,请参见标识符名称和关键字。