在火星新闻组上有人建议把D语言改名为Diamond,以期吸引公众更多的关注。俺也非常同意这个想法,毕竟 diamond 比 ruby,pe(a)rl 值钱得多 :)
  • 16:03
  • 浏览 (450)
  • 评论 (0)
今晚无聊,完整用D实现了Boost.Variant 的绝大部分,权当娱乐了。 1 // Module: variant.d 2 // Author: Oldrev (wstring#AT#gmail.com) 3 // License: BSD 4 5 module dust.meta.variant; 6 7 import std.typetuple; 8 import std.traits; 9 10 private template MaxSizeImp(T, V...) 11 { 12 static if(V.length > 0) 13 ...
  • 15:35
  • 浏览 (698)
  • 评论 (1)
今天终于研究出了用递归模板实现D语言编译时字符串连接的方法,我实在是高兴得不得了。其实方法很简单,一点就破,下面的代码很好的说明了问题,在编译时16行会在 main() 函数体内添加三个变量,分别是:int foo0, long foo1, float foo2。用这种方法甚至可以在编译期为类添加成员函数、变量、类型定义等等,反正只要是符合语法的就可以,不像 mixin template 有那么多的限制。 1 import std.metastrings; 2 import std.stdio; 3 4 private template GenVars(int N, char[] S, T, ...
  • 18:28
  • 浏览 (555)
  • 评论 (0)
昨天夜里我把我自己写的DLL包装类代码贴到了D语言新闻组里,没想到 tango库(准标准库,类似C++的Boost)开发小组的Kris Bell问我是否愿意把代码捐献给tango库,还说什么呢,当然是一千个愿意,一万个愿意啦!
  • 08:41
  • 浏览 (811)
  • 评论 (2)
今天晚上在牺牲了N^N个脑细胞之后,终于实现了上一帖所设想的DLL包装类(把Proc换成Symbol),源程序已经通过了编译,可以运行,当然还不够强壮。大半夜的趁着这股热乎劲,贴上来玩玩。 1 import std.c.windows.windows; 2 import std.stdio; 3 import std.traits; 4 import std.string; 5 import std.utf; 6 7 struct Symbol(char[] SymName, Ret, Params...) 8 { 9 alias Params Par ...
  • 05:48
  • 浏览 (700)
  • 评论 (0)
今天早上突发奇想,想用D语言新增加的mixin和可变参数模板来封装Windows的DLL,结果奋斗了一天也没有结果。我原先设想的是达到类似如下伪码的水平:1 //Module 模板第一个参数是DLL路径名,后跟不限个数 Proc 模板。Proc用于定义一个DLL中的函数,第一个参数为函数名,第二个为返回值类型,其余为形参。2 Module!("User32.dll", Proc!("MessageBoxW", int, HWND, const wchar*, const wchar*, uint), Proc!("GetDesktopWindow", HWND)) user32;3 //使用D ...
  • 09:50
  • 浏览 (491)
  • 评论 (0)
D语言教主 Walter Bright 今天放出了 DMD 1.006 编译器!最主要的更新是添加了一个叫做编译时执行函数(Compile Time Execution of Functions)的功能,顾名思义,就是在编译时对符合要求的函数进行求值。这是一个非常有用的特性,以前当我们要在编译时(也就是“元编程”)进行一点稍微负载的常数计算时,往往需要用晦涩的递归模板来进行,不仅功能非常有限而且代码非常难以理解(还记得那个在编译器的出错信息中输出计算结果的C++程序吗?)。现在有了这个功能,我们可以在编译时进行包括递归和循环在内的复杂计算了,换就话说就是DMD编译器初步具有了编译时解释执行D语 ...
  • 14:51
  • 浏览 (458)
  • 评论 (0)
因为一直研究Linux、FreeBSD的关系,最近才知道“熊猫烧香”病毒近两个月肆虐网络,给 Windowz世界带来了巨大破坏,甚至很多门户网站还为此作了专题。我用google搜索“熊猫烧香”,google给我的答案是:“约有2,420,000项符合熊猫烧香的查询结果”,我估计反病毒公司们现在可是发大了,哈哈。不过我个人觉得这个东西严格来说不应该算是病毒,纯粹就是一破坏程序,病毒还真没这么大张旗鼓又换图标又删服务的。Windows用户们由于追求方便和兼容性(最著名的就数QQ了,我看Tencent甚至不知道Windows为用户数据准备的地方在哪里),没有使用 Windows的权限功能,让病毒啊、 ...
  • 16:23
  • 浏览 (512)
  • 评论 (0)
2007-02-07

D语言最Cool特性

关键字: D 元编程
昨天Walter 发布了D语言编译器 DMD 1.005版,添加了有史以来最Cool的语言特性:mixin/import 语句。 mixin(字符串常量表达式) 语句可以在编译时把字符串常量表达式的结果作为源程序的一部分插入到当前作用域中,举个例子来说: int a = 2; mixin("int x = 2; x = 3;"); int y = 6; x = 4; 就等价于你亲手写: int a = 2; int x = 2; x = 3; int y = 6; x = 4; 更cool的是import语句,import(字符串差常量表达 ...
好久没跟新了,想写点什么,却又不知道该写什么......
  • 07:37
  • 浏览 (260)
  • 评论 (0)
oldrev
搜索本博客
我的相册
7e9318d5-c74f-36e0-81a3-beb68acaa2b8-thumb
Screenshot
共 1 张
最近加入圈子
存档
最新评论