全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1013
推到 Plurk!
推到 Facebook!

請問如何把多個涵式利用typef宣告成一個陣列,在利用代入的值開啟其對應的涵式

答題得分者是:taishyang
vk8051
一般會員


發表:22
回覆:33
積分:21
註冊:2007-08-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-04 09:33:45 IP:220.130.xxx.xxx 訂閱
煩請各位大大~撥空解答一下~我那邊寫錯了

void case1_fun (void);
void case2_fun (void);
typedef void *keyfun (void);
keyfun_array[]={ &case1_fun, &case2_fun };

unsigned char key_data;
bit flag;

void main (void)
{
while(1)
{
key_data ;
keyfun_array[key_data]; //<--這邊我不了解怎麼把宣告的呼叫出來

}
}

void case1_fun (void)
{
//涵式1
}

void case2_fun (void)
{
//涵式2
}

------
vincent
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-04 10:20:09 IP:122.124.xxx.xxx 未訂閱
試試下面的code
void case1_fun(void);
void case2_fun(void);
typedef void (*keyfun)(void);
keyfun function_array[]={case1_fun, case2_fun};
unsigned char key_data;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void case1_fun (void)
{
ShowMessage("涵式1");
}
//---------------------------------------------------------------------------
void case2_fun (void)
{
ShowMessage("涵式2");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int nfunctionCnt = sizeof(function_array)/sizeof(function_array[0]);
for (int i=0; i < nfunctionCnt; i )
{
function_array[i]();
}
}



編輯記錄
taishyang 重新編輯於 2007-09-04 10:20:53, 註解 無‧
taishyang 重新編輯於 2007-09-04 10:25:09, 註解 無‧
vk8051
一般會員


發表:22
回覆:33
積分:21
註冊:2007-08-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-09-04 10:30:22 IP:220.130.xxx.xxx 訂閱
謝謝~前輩回答已經試出來了!!
感恩!!
------
vincent
系統時間:2024-05-02 20:38:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!