作者sunneo (艾斯寇德)
看板C_and_CPP
標題Re: [問題] 請問static是什麼意思...
時間Sat Oct 6 12:04:48 2007
說到這個
最近我作了一個開玩笑的程式碼
大致上如下吧 =p
typedef enum GlobalValueID
{
NOVALUE,
SELECTDRAWTOX,
MENUFRCOLOR,
MENUBGCOLOR,
FINDARRAYDISPLAYMODE,
TEXTFRCOLOR,
TEXTBGCOLOR,
SELECTFRCOLOR,
SELECTBGCOLOR
}GlobalValueID;
於是就有這種code
static void* GetGlobalValue(GlobalValueID id) __attribute__((constructor))
{
static void *ptr = NULL;
static int SelectDrawToX = SCREEN_FSIZE_FILLTO;
static COLOR_8 menu_frcolor = DEF_MENU_FRCOLOR;
static COLOR_8 menu_bgcolor = DEF_MENU_BGCOLOR;
static DisplayMode FindArrayDisplayMode = DEF_FINDARRAYDISPLAYMODE;
static COLOR_8 text_frcolor = DEF_TEXT_COLOR;
static COLOR_8 text_bgcolor = DEF_TEXT_BGCOLOR;
static COLOR_8 select_frcolor = DEF_SELECT_COLOR;
static COLOR_8 select_bgcolor = DEF_SELECT_BGCOLOR;
switch(id)
{
default:
case NOVALUE: ptr = NULL; break;
case SELECTDRAWTOX: ptr = &SelectDrawToX; break;
case MENUFRCOLOR: ptr = &menu_frcolor; break;
case MENUBGCOLOR: ptr = &menu_bgcolor; break;
case FINDARRAYDISPLAYMODE: ptr = &FindArrayDisplayMode; break;
case TEXTFRCOLOR: ptr = &text_frcolor; break;
case TEXTBGCOLOR: ptr = &text_bgcolor; break;
case SELECTFRCOLOR: ptr = &select_frcolor; break;
case SELECTBGCOLOR: ptr = &select_bgcolor; break;
}
return ptr;
}
所以要使用全域變數就會類似是這樣的情形
(*(COLOR_8*)GetGlobalValue(MENUFRCOLOR)) = WHITE;
喜歡全域變數嗎 科科
--
IceCold::IceCode
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.228.138
※ 編輯: sunneo 來自: 220.132.228.138 (10/06 12:05)
→ sunneo:最後總覺得是自找麻煩 :( 10/06 12:07
→ Jason09:噗噗,桑尼歐大大…推推 10/06 17:42