2014-02-24 170 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