`
oldrev
  • 浏览: 230774 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

D语言在编译期添加变量

阅读更多
今天终于研究出了用递归模板实现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, V...)
5 {
6 public const char[] Result = S ~ Format!("%s foo%s;", T.stringof, N);
7 public enum { Index = N + 1 }
8 pragma(msg, Result ~ "\n");
9 static if(V.length > 0)
10 mixin GenVars!(Index, Result, V);
11 }
12
13 void main()
14 {
15
16 mixin(GenVars!(0, "", int, long, float).Result);
17 }
分享到:
评论

相关推荐

    c#学习笔记.txt

    c#学习笔记(1) ...(Microsoft后来在完全面向.NET框架的开发语言集中加入了Visual J#.NET,算是对Java语言用户的一种照顾。) 有人说,选择C#意味着选择MS(在中国的程序员当中,这并不是件值得自豪的事...

    操作系统(内存管理)

    在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管理的重要性有一点点降低。对实际编程来说,理解您的内存管理器的能力与局限性至关重要。在大部分系统语言中,比如 C 和 C++,您必须进行内存管理...

    PT80-NEAT开发指南v1.1

    编译及运行程序(模拟器下) ................................................................................................................ 7 编译及运行程序(PT80) ......................................

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    asp.net知识库

    Coalesys PanelBar + R.a.d Treeview +Xml 构建的Asp.net 菜单和权限管理模块 突破屏蔽限制,自己的网站使劲弹新IE窗口 对页面SCROLLING的CSS不能生效原因 .Net 中IE使用WinForm控件的使用心得。 动态加载用户控件的...

    精通DirectX.3D图形与动画程序设计.pdf

    a.8 声明变量的位置 a.9 const常量表达式  a.10 函数重载 a.11 运算符重载 附录b win32 api程序设计基础 b.1 api和sdk b.2 win32程序框架 b.3 win32 api程序框架分析 附录c com使用基础 c.1 什么是com对象 c.2 创建...

    51单片机C语言编程基础及实例

    我们通常又将各二极与一个字节的 8 位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7), 相应 8 个发光二极管正好与单片机一个端口 Pn 的 8 个引脚连接,这样单片机就可以通过引脚输出高 低电平控制 8 个...

    ASP3《高级编程》(第一部分)

    2.4.3 检测浏览器的语言 56 2.4.4 其他有用的ServerVariables集合的值 57 2.5 其他Request和Response技巧 57 2.5.1 连接、缓冲和页面重定向的管理 58 2.5.2 操作HTTP报头 60 2.5.3 使用客户证书 65 2.5.4 读写...

    ASP3《高级编程》(第二部分)

    2.4.3 检测浏览器的语言 56 2.4.4 其他有用的ServerVariables集合的值 57 2.5 其他Request和Response技巧 57 2.5.1 连接、缓冲和页面重定向的管理 58 2.5.2 操作HTTP报头 60 2.5.3 使用客户证书 65 2.5.4 读写...

Global site tag (gtag.js) - Google Analytics