【发布时间】:2014-02-25 01:30:13
【问题描述】:
我有多个问题。首先,如果我想用 GDC 编译简单的 hello world 程序,它会返回一个错误:function expected before (), not writeln of type int。
module test.main;
import std.stdio;
void main()
{
writeln("Hello world");
}
如果我在 compileonline.com 上使用在线编译器。它工作正常(有趣......)。 第二个问题。如果我想通过destroy(object)调用析构函数。它返回错误:错误:未定义的标识符销毁。
【问题讨论】:
-
我没有 GDC,但代码可以用 DMD2 很好地编译(
destroy(object)也是如此)。 -
确保你有新版本,你可能有一个非常旧的编译器。请注意,dmd 也使用 ld。虽然它不使用 as,但您仍然可以使用 objdump 反汇编其输出,或者您可以链接使用 as 编写的函数。
-
通过创建一个小 D 文件来检查版本:
pragma(msg, __VERSION__);并在编译时查看它的内容。 -
我建议您编辑您的原始帖子并删除(不公平的)最后声明。否则我别无选择,只能投反对票……
-
__ctor 和 __dtor 只是构造函数和析构函数的名称。它们没有在任何地方正式定义,这些只是编译器将 this() 和 ~this() 函数转换为的名称,并允许您稍后在没有关键字的情况下访问它们。我不知道您是否可以使用 gdc 二进制文件,可能取决于您的发行版,但 wiki 有一些信息:wiki.dlang.org/GDC#Binary_Releases
标签: d