2014-02-24 165 views
1

我有多个问题。首先,如果我想用GDC编译简单的hello world程序,它会返回一个错误:function before(),而不是int类型的writeln。编译失败D代码

module test.main; 
import std.stdio; 

void main() 
{ 
    writeln("Hello world"); 
} 

如果我在compileonline.com上使用在线编译器。它工作正常(有趣...)。 第二个问题。如果我想通过destroy(object)调用析构函数。这是返回错误:错误:未定义标识符销毁。

+0

我没有GDC,但代码与DMD2编译得很好(正如'destroy(object)')。 – Michael

+0

我需要GDC,因为我知道(并且需要)GNU工具链(GDC - > as - > ld)。 – Seraph

+1

确保你有新版本,你可能有一个非常老的编译器。请注意,bmd也使用ld。虽然它不使用as,但您仍然可以使用objdump反汇编其输出,或者您可以链接使用as编写的函数。 –

回答

0

第二个问题:使用统一函数语法并将destroy函数作为要销毁的对象的成员。或者更好,让垃圾收集器为你处理。

+1

writeln已在std.stdio中很长一段时间......我认为2007年左右会有所增加。它不在D1,但现在真的很老了。 –

+0

我不知道为什么那件事在我脑后,但你说得对。 – HaMster

+0

?如果我使用DMD,它可以在writeln(str)下正常工作。 – Seraph