米斯基托文翻譯

char Func2(int a) { return a<8 ? 20 : 30; }

void main(void)

 

    #pragma overlay=off

注意code的關頭字是51系列獨有的翻譯

//這行的意思是說,宣佈有兩個內容陣列,而該內容的型態是函數,該函數的型態是char* func(int arg);

    若是是KEIL C呢?

    至於該如何應用呢?例如有5個按鍵,就能夠做出5個內容的陣列,按下1號鍵時產生數字0……5號鍵是數字4,此時就能夠利用這個function table,如許就能夠免除5if…else,若是有20個按鍵,就少了20個,很容易維護。

   char result;

char (* const func_x[2])(int arg) = {Func1, Func2};

}

    若是都不處理,當作沒看到也行,那就要求老天保佑了,就是compiler沒有疊到不該疊的處所了。

char (* const code func_x[2])(int arg) = {Func1, Func2};

C說話中function table要怎麼寫?

char Func1(int a) { return a>5 ? 10 : 20; }

 

    該程式碼的記憶體就不會利用共用的模式來處理,所以ram的利用量就要大增了,至於要取消掉overlay?或是利用reentrant?就要好好權衡了。

    看成出function table的履行時,例如8051,會有overlay memory的毛病產生,具體原因請參考前一篇探討什麼是overlay memory的文章,該文章已經寫出keil c的解決方法,但如果是IAR怎麼辦?只要在程式碼的開首加上: