D語言GUI編程-main與WinMain

前一篇Blog,試圖做一個只有messagebox的最簡單的GUI程序。
入口有兩種方式:
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

發佈了9 篇原創文章 · 獲贊 0 · 訪問量 1103
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章