入口有兩種方式:
main與WinMain。
從dmd自帶sample中的winsamp.d 例子中是用的WinMain函數。而使用dfl和dwt這些庫的入口方式都是main。
這兩種之間有什麼不同嗎?
我到D forum發貼問過,有高手回答了。
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=52574
大概意思是:
其實D語言在啓動入口點爲main的時候,D在調用main之前會進行一些初始化(其中包括垃圾回收啓動),並且在main函數後,再調用系統的銷燬動作(其中包括垃圾回收的結束)。所以D語言推薦入口爲main函數。
如果是WinMain入口,系統初始化和銷燬都需要寫顯示的代碼,正如winsamp.d
gc_init(); // initialize garbage collector
_minit(); // initialize module constructor table
try
{
_moduleCtor(); // call module constructors
_moduleUnitTests(); // run unit tests (optional)
result = doit(); // insert user code here
}
catch (Object o) // catch any uncaught exceptions
{
MessageBoxA(null, cast(char *)o.toString(), "Error",
MB_OK | MB_ICONEXCLAMATION);
result = 0; // failed
}
gc_term(); // run finalizers; terminate garbage collector
return result;
還有上次的
Symbol Undefined __acrtused" 問題,Walter Bright,給了一個鏈接
http://www.digitalmars.com/ctg/acrtused.html