问题标签 [dmd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
184 浏览

linux - 从崩溃信息中打印函数名称

我的程序(在 Linux 上用 D 编译器 DMD 编译)崩溃,并打印如下信息:

如何将函数的地址转换为其名称?我已经用它编译了我的程序,-debug所以-g它应该包含所需的调试信息,我只是不知道如何使用它。

(PS:这很简单,但我似乎找不到怎么做。可能没有使用正确的搜索词)。

0 投票
1 回答
579 浏览

templates - 如何在 D 中使用“模板构造函数”?

D的模板文档包括一个名为“模板构造函数”的小部分。该部分没有任何示例或大量文档。

我正在尝试使用该功能(我知道我可以只使用“静态构造函数”,但我有理由更喜欢模板构造函数)。

特别是,我试图在编译时生成一些哈希。这是我的尝试:

这不能与 DMD 2.053 一起编译:

它抱怨第一个构造函数。删除后:

考虑到我使用的语法与 MyHash 是模板结构一样,这是非常合乎逻辑的。

那么,有谁知道我如何声明和调用“模板构造函数”?

0 投票
1 回答
333 浏览

operator-overloading - 重载 opIndexAssign

我似乎在我的一个类中重载 opIndexAssign 时遇到了一些麻烦。

我有课;JSObject 定义如下:

...

Dobject 超类重载了 put() 和 get() 方法,我正在尝试包装它们,以便可以将它们作为关联数组访问:

它适用于 String,String 方法,但是当我尝试使用 JSObject 作为值时,它失败了。

我对自己做错了什么有点不知所措。就像编译器尝试将其强制转换为适合 opIndexAssign( String, String ) 而不是 opIndexAssign( String, JSObject ) 方法。

我是否错误地定义了 opIndexAssign 函数?

提前致谢,

0 投票
2 回答
259 浏览

garbage-collection - D中的垃圾收集,指针和范围

提前对长篇道歉 - 我有一个问题,我认为可能与垃圾收集有关。

我有一个像这样包装 DMDScript 的类:

到目前为止,一切都很好,我可以毫无错误地运行代码。输出:

我还向 ScriptingHost 添加了一个跟踪 cc.global 对象的方法:

...这也可以正常工作 - 当我尝试从类 ala 之外访问它时会出现问题:

然后我收到以下错误:

有没有人能够在这里阐明这个问题 - 也许如何解决它,拜托?:)

编辑:我正在使用 Windows D1-Tango 设置。我使用的版本是 0.99.9 Tango/DMD 1.056 Kai bundle 。

谢谢,

0 投票
4 回答
12120 浏览

compiler-construction - DMD 与 GDC 与 LDC

不同 D 编译器的优缺点是什么?性能和标准合规性/D2 支持如何?调试器的支持程度如何?错误消息有多好,IDE 集成如何?64位支持有多好?到目前为止我的想法:

DMD

  • 成熟且维护良好
  • 只有一个平台,64位支持不好
  • 不是自由源码软件

游戏开发中心

  • 支持各种平台
  • 有非常成熟的优化,所以很快?
  • 过时的运行时间?
  • GCC这么好的调试器支持?

最不发达国家

  • 支持各种平台
  • LLVM,所以它支持 JITing?
  • 有非常成熟的优化,所以很快?
  • 保养得不是很好?
  • 过时的运行时间?

死/不工作

  • sdc
  • MiniD - 非常非常好,但不是 D(但从未声称是)

我正在考虑以 ARM 为目标,我认为 GDC 是首选工具,但我不确定。

0 投票
1 回答
325 浏览

windows - 替换 DMD 的 kernel32.lib 以包含缺少的功能

我在 Windows 7 上使用 dmd 2.054 和 optlink 8.00.12。

以下程序:

编译时报错:

但是如果我尝试替换 kernel32.lib,我会收到很多错误:

查看原始 lib 和为显示创建的 implibLocalFree显示存在差异,但我不确定这意味着什么(此输出中缺少一些特殊字符)

知道如何在我的程序中使用新的 kernel32.lib 来避免丢失符号吗?

0 投票
1 回答
842 浏览

d - 为什么 readf 的行为不符合预期?

第一次迭代有效,它打印n,但之后readf()永远不会返回。

该文档只有一行解释readf()

uint readf(A...)(in char[] 格式, A args);

我做错了吗?还是有什么问题readf()?我只需要从标准输入中读取数字。

使用:DMD 2.054 64 位

0 投票
2 回答
165 浏览

command-line - 为什么不编译其他模块?

我有两个文件:Main.dImportMe.d. 他们的目的应该是不言自明的。它们在同一个目录中,并且没有明确的模块声明。但是,当我尝试编译Main.d时,出现“未找到符号”错误!

同时编译这两个文件可以正常工作。

不过,您不必对标准库执行此操作。它有什么不同?更改包含路径 via-I没有明显的效果。

0 投票
3 回答
742 浏览

d - Fedora 16 上的 D 编程

我最近安装了 Fedora 16(这很棒),主要是因为我想尝试 LDC2,但也因为 Gnome Shell 在 Fedora 上的运行比 Ubuntu 11.10 更流畅(至少在我的硬件上)。

LDC2 效果很好,但我想知道通过输出 LLVM .ll/.bc 代码是否可以在 Windows/Mac/Android 上编译和运行应用程序。我可以使用 LLVM 在我的 Windows 机器上将 .ll/.bc 文件编译为 ASM .s。然而,我第一次编译 ASM 的尝试给了我错误:“'main' functions not found.”。通过 ASM,我确实看到了一个 _Dmain 函数。我以前没有编译 ASM 的经验,所以我有点迷茫。

我知道 DRuntime 在这里发挥作用,但是关于 LDC2 的 DRuntime 平台支持状态的最新信息很少。所以我想知道我的选择是什么。LDC2 现在可以为 Windows 编译代码吗?目前是否支持任何其他平台/架构的交叉编译?

GDC呢?我想尝试 GDC,但在 Fedora 软件中心找不到它,而且我对 Linux 有点陌生,所以我很难从源代码构建它。


D(第 2 版)是我最喜欢的语言(其次是 C#),我期待有一天我可以用 D 编写游戏/应用程序,而不必担心硬件或平台支持。我支持这门语言,我希望开源社区在未来能够大力支持 D。它确实是我所见过的功率、性能和生产力的最佳平衡。

0 投票
2 回答
348 浏览

d - D 中的扩展函数

我不久前买了“The D Programming Language”。很棒的书,很有教育意义。但是,我在尝试编译书中列出的语言功能时遇到了麻烦:扩展功能。

在书中,Andrei 写道,任何函数(a, b) 都可以像这样调用:a.function(b); 所以我应该能够做到这一点:

正确的?这个功能还没有实现,还是我只是错过了什么?我注意到导入 std.range 会将方法添加到数组中,因此它似乎确实在某个级别上实现了。