Dec 1, 2005
New/Changed Features
- The predefined version identifier D_InlineAsm has been changed to D_InlineAsm_X86. The former made no sense, and although it is still defined, it is deprecated.
- Added D code coverage analyzer.
- Added .mangleof property for types, which gives the 'mangled' type name as a string.
Bugs Fixed
其中“D代码覆盖分析器”应该是很多人感兴趣的东西了,下面是一个例子(摘自http://digitalmars.com/d/code_coverage.html):
/* Eratosthenes Sieve prime number calculation. */
bit flags[8191];
int main()
{ int i, prime, k, count, iter;
printf("10 iterations\n");
for (iter = 1; iter <= 10; iter++)
{ count = 0;
flags[] = true;
for (i = 0; i < flags.length; i++)
{ if (flags[i])
{ prime = i + i + 3;
k = i + prime;
while (k < flags.length)
{
flags[k] = false;
k += prime;
}
count += 1;
}
}
}
printf ("\n%d primes\n", count);
return 0;
}
编译、运行:
dmd sieve -cov
sieve
结果如下:
|/* Eratosthenes Sieve prime number calculation. */
|
|bit flags[8191];
|
|int main()
5|{ int i, prime, k, count, iter;
|
1| printf("10 iterations\n");
22| for (iter = 1; iter <= 10; iter++)
10| { count = 0;
10| flags[] = true;
163840| for (i = 0; i < flags.length; i++)
81910| { if (flags[i])
18990| { prime = i + i + 3;
18990| k = i + prime;
168980| while (k < flags.length)
| {
149990| flags[k] = false;
149990| k += prime;
| }
18990| count += 1;
| }
| }
| }
1| printf ("\n%d primes\n", count);
1| return 0;
|}
sieve.d is 100% covered
另一个惊喜是mangleof属性,可以得到一个类型被编译器mangle后的名字。不知道mangle对应的中文翻译是什么?大概是“名字转换”吧。一点测试代码:
import std.stdio;
void test();
void test1(int n);
void test2(int n);
void main()
{
void function (int, char[]) f;
void function (int) f1;
void function () f2;
writefln (f.mangleof);
writefln (f1.mangleof);
writefln (f2.mangleof);
writefln (int.mangleof);
float a;
writefln (a.mangleof);
writefln ((&test).mangleof);
writefln ((&test1).mangleof);
writefln ((&test2).mangleof);
writefln (void.mangleof);
}
编译执行结果如下:
PFiAaZv
PFiZv
PFZv
i
f
PFZv
PFiZv
PFiZv
v
分享到:
相关推荐
D语言编译器DMD 2.065已经发布了,D语言经过近年来的努力终于取得不错的成绩!这个版本包含了大量问题修复和改进,真是值得敬佩
NULL 博文链接:https://godspeedhu.iteye.com/blog/423419
Dynamic Mode Decomposition (DMD).zip
编译器源代码之:DMD(D语言)dmd.2.026。vc6编译通过
用于控制sim显微镜中的dmd部分。 此代码可以控制dmd产生规则的图形。以控制显微镜光源形状
Schematic-FLD3 DMD Board DLP TI
用于了解DMD的文档。 dmd可以用于结构光超分辨显微镜。
快照数据的动态模态分解,获得基模态和对应的特征值,包括频率和增长率,以及数据后处理。
D语言是结合了C#、Java和 C++以及PHP、Python等动态语言的特性于一身,且不依赖于虚拟机, 而是作为可执行程序单独来运行的,这样它的效率非常高。
DMD2-master_DMD_源码.zip
Arduino dmd library for matrix display
动态模式分解的matlab 代码,有注释
数字微镜DMD编程,包括设置帧频、画面大小和积分时间等参数
数据决策与模型工具模板 (DMD spreadsheets),用于决策分析一整套的工具表格,涵盖经济、营销、人力资源等
Dynamic_Mode_Decomposition_DMD_源码.zip
Hi3798CV200硬件HDK 海思网络机顶盒方案硬件开发资料 硬件版本号:CV2DMD 包含原理图和PCB(PCB包含PADS和ALLEGRO两个版本)
DMD回归模型PPT课件.pptx
DMD芯片显示原理详解.doc
installer, 适用于各种系统的dmd安装程序 安装程序这里存储库宿主用于构建DMD安装程序和软件包的脚本。要下载现成的安装安装程序或者包,请访问 dlang.org 下载页面。要了解有关安装脚本的更多信息,请访问 install....
DMD芯片显示原理详解.docx