d编译时扩展ctfe
原文
对:
//main.d
import std;
void main()
{
enum x = iota(1, 5).reduce!"a * b";
x.writeln();
}
通过类似:
dmd --expand-ctfe main.d -o expanded.d
cat expanded.d
得到:
//expanded.d
import std;
void main()
{
24.writeln();
}
可试试-vcg-ast
标志:
import object;
import std;
void main()
{
enum int x = 24;
writeln(24);
return 0;
}
// 一堆模板实例
或者这样:
template printEnum(alias x, string file = __FILE__, size_t line = __LINE__)
{
enum printEnum = x;
pragma(msg, file, "(", int(line), "): ", printEnum);//打印.
}
enum x = printEnum!(iota(1, 5).reduce!"a * b");
可这样:
debug template printEnum(...) {
... // 上面内容仅用于调试时.
}//加上-debug标志.
else
enum printEnum(alias x) = x;
参考
大内存,用64位
编译:
dmd -m64 -run test.d
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现