星期二, 7月 27, 2010

Windows Mobile的變數動態初始化(Dynamic Initialization of variables)

閒來無事讀了篇文章,
講有關變數初初始化,
內容還不錯..

#include

int alpha(void)
{
    return 20;
}

int i = alpha(); //dynamic intialization

int main()
{
    printf("i = %d",i);
    return i;
}


i是一個glocal變數,其初始值是由一個function提供的,
經過測試得到結果為0,
而非預期的20.
原因是系統直接由main(entry point) call進來,
並未真正有機會去呼叫其他初始化的function,
必須改由CRT系列的entry point,
main對應的就是mainCRTStartup,
詳細table可參閱原文.

原文參考:
http://blogs.msdn.com/b/ce_base/archive/2008/06/02/dynamic-initialization-of-variables.aspx

沒有留言:

張貼留言