→ sunneo:我想如果是function ptr的話 傳進去直接call就可以了 02/26 23:06
※ 引述《omomo34415 ( )》之銘言:
: 就是我有兩段code幾乎都一樣
: do.......
: if(a>b)
: do........
: do......
: if(a<b)
: do.......
: do的部分都一樣,有辦法寫個function
: fun(<)
: do.......
: if(a>b)
^^^^ 這個是指 '<' 吧?
: do........
: fun(>)
: do.......
: if(a>b)
: do........
: 希望看的懂我再說什麼
嗯嗯嗯 只能有一個的話 我也不知道如何用C
不過 如果用組合語言 可以直接修改 func的資料
然後 CS:IP指過去 就可以當 instruction跑了
取巧一點 兩個實體的話
可以用 array of function point 然後 切換使用
ex:
typedef enum{
MORE_THAN=0,
LESS_THAN=1,
}FUNC_SWITCH_CMP;
ret_T more_than_func(para1, para2, ...){ /* implemenet */ }
ret_T less_than_func(para1, para2, ...){ /* implemenet */ }
typedef ret_T (*T_FUNC)(para_T1, para_T2, ...);
T_FUNC your_func[] = { more_than_func, less_than_func };
當你要 切換 codes時 把 enum type 進去
ex:
ret_T execute_func( FUNC_SWITCH_CMP switch_flag, para1,para2 ){
return your_func[ switch_flag]( para1, para2);
}
不過! 它們還是 有兩個實體 而不是 一個 func
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.123.165