Re: [問題] 請問static是什麼意思...

看板C_and_CPP作者 (艾斯寇德)時間16年前 (2007/10/06 12:04), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串5/5 (看更多)
說到這個 最近我作了一個開玩笑的程式碼 大致上如下吧 =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
文章代碼(AID): #171mbZT4 (C_and_CPP)
文章代碼(AID): #171mbZT4 (C_and_CPP)