Re: [問題] 請問static是什麼意思...
說到這個
最近我作了一個開玩笑的程式碼
大致上如下吧 =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)
→
10/06 12:07, , 1F
10/06 12:07, 1F
→
10/06 17:42, , 2F
10/06 17:42, 2F
討論串 (同標題文章)
完整討論串 (本文為第 5 之 5 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章