作者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)
1F:→ sunneo:最後总觉得是自找麻烦 :( 10/06 12:07
2F:→ Jason09:噗噗,桑尼欧大大…推推 10/06 17:42