问题标签 [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.
linux - 从崩溃信息中打印函数名称
我的程序(在 Linux 上用 D 编译器 DMD 编译)崩溃,并打印如下信息:
如何将函数的地址转换为其名称?我已经用它编译了我的程序,-debug
所以-g
它应该包含所需的调试信息,我只是不知道如何使用它。
(PS:这很简单,但我似乎找不到怎么做。可能没有使用正确的搜索词)。
templates - 如何在 D 中使用“模板构造函数”?
D的模板文档包括一个名为“模板构造函数”的小部分。该部分没有任何示例或大量文档。
我正在尝试使用该功能(我知道我可以只使用“静态构造函数”,但我有理由更喜欢模板构造函数)。
特别是,我试图在编译时生成一些哈希。这是我的尝试:
这不能与 DMD 2.053 一起编译:
它抱怨第一个构造函数。删除后:
考虑到我使用的语法与 MyHash 是模板结构一样,这是非常合乎逻辑的。
那么,有谁知道我如何声明和调用“模板构造函数”?
operator-overloading - 重载 opIndexAssign
我似乎在我的一个类中重载 opIndexAssign 时遇到了一些麻烦。
我有课;JSObject 定义如下:
...
Dobject 超类重载了 put() 和 get() 方法,我正在尝试包装它们,以便可以将它们作为关联数组访问:
它适用于 String,String 方法,但是当我尝试使用 JSObject 作为值时,它失败了。
我对自己做错了什么有点不知所措。就像编译器尝试将其强制转换为适合 opIndexAssign( String, String ) 而不是 opIndexAssign( String, JSObject ) 方法。
我是否错误地定义了 opIndexAssign 函数?
提前致谢,
garbage-collection - D中的垃圾收集,指针和范围
提前对长篇道歉 - 我有一个问题,我认为可能与垃圾收集有关。
我有一个像这样包装 DMDScript 的类:
到目前为止,一切都很好,我可以毫无错误地运行代码。输出:
我还向 ScriptingHost 添加了一个跟踪 cc.global 对象的方法:
...这也可以正常工作 - 当我尝试从类 ala 之外访问它时会出现问题:
然后我收到以下错误:
有没有人能够在这里阐明这个问题 - 也许如何解决它,拜托?:)
编辑:我正在使用 Windows D1-Tango 设置。我使用的版本是 0.99.9 Tango/DMD 1.056 Kai bundle 。
谢谢,
compiler-construction - DMD 与 GDC 与 LDC
不同 D 编译器的优缺点是什么?性能和标准合规性/D2 支持如何?调试器的支持程度如何?错误消息有多好,IDE 集成如何?64位支持有多好?到目前为止我的想法:
DMD
- 成熟且维护良好
- 只有一个平台,64位支持不好
- 不是自由源码软件
游戏开发中心
- 支持各种平台
- 有非常成熟的优化,所以很快?
- 过时的运行时间?
- GCC这么好的调试器支持?
最不发达国家
- 支持各种平台
- LLVM,所以它支持 JITing?
- 有非常成熟的优化,所以很快?
- 保养得不是很好?
- 过时的运行时间?
死/不工作
- 当
- sdc
- MiniD - 非常非常好,但不是 D(但从未声称是)
我正在考虑以 ARM 为目标,我认为 GDC 是首选工具,但我不确定。
windows - 替换 DMD 的 kernel32.lib 以包含缺少的功能
我在 Windows 7 上使用 dmd 2.054 和 optlink 8.00.12。
以下程序:
编译时报错:
但是如果我尝试替换 kernel32.lib,我会收到很多错误:
查看原始 lib 和为显示创建的 implibLocalFree
显示存在差异,但我不确定这意味着什么(此输出中缺少一些特殊字符)
知道如何在我的程序中使用新的 kernel32.lib 来避免丢失符号吗?
d - 为什么 readf 的行为不符合预期?
第一次迭代有效,它打印n
,但之后readf()
永远不会返回。
该文档只有一行解释readf()
:
uint readf(A...)(in char[] 格式, A args);
我做错了吗?还是有什么问题readf()
?我只需要从标准输入中读取数字。
使用:DMD 2.054 64 位
command-line - 为什么不编译其他模块?
我有两个文件:Main.d
和ImportMe.d
. 他们的目的应该是不言自明的。它们在同一个目录中,并且没有明确的模块声明。但是,当我尝试编译Main.d
时,出现“未找到符号”错误!
同时编译这两个文件可以正常工作。
不过,您不必对标准库执行此操作。它有什么不同?更改包含路径 via-I
没有明显的效果。
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。它确实是我所见过的功率、性能和生产力的最佳平衡。
d - D 中的扩展函数
我不久前买了“The D Programming Language”。很棒的书,很有教育意义。但是,我在尝试编译书中列出的语言功能时遇到了麻烦:扩展功能。
在书中,Andrei 写道,任何函数(a, b) 都可以像这样调用:a.function(b); 所以我应该能够做到这一点:
正确的?这个功能还没有实现,还是我只是错过了什么?我注意到导入 std.range 会将方法添加到数组中,因此它似乎确实在某个级别上实现了。