close

阿柯利語翻譯

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

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

    上述程式會履行Func2,因為(arg=5)<8,所以result=20翻譯至於其他型別的函式,依樣畫葫蘆就能夠了。

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

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

 

注意code的要害字是51系列獨有的。

{

 

void main(void)

}

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

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

    該程式碼的記憶體就不會利用共用的模式來處置懲罰,所以ram的使用量就要大增了,至於要作廢掉overlay?或是利用reentrant?就要好好衡量了翻譯

    如果是KEIL C呢?

    假如今天ram不敷大,例如是8051,就要把該陣列放在flash內了,不外要注意flash存取速度會不會很慢,以IAR為例:

    當作出function table的履行時,例如8051,會有overlay memory的毛病產生,詳細緣由請參考前一篇切磋什麼是overlay memory的文章,該文章已經寫出keil c的解決方式,但若是是IAR怎麼辦?只要在程式碼的開首加上:

   result = (*func_x[1])(5);

C語言中function table要怎麼寫?

char (*func_x[2])(int arg) = {Func1翻譯社 Func2};

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

    #pragma overlay=off

   char result;



以下內文出自: http://blog.udn.com/cchahacaptain/2303219有關各國語文翻譯公證的問題歡迎諮詢天成翻譯公司02-77260931

arrow
arrow
    文章標籤
    翻譯社
    全站熱搜
    創作者介紹
    創作者 vickieg11m1 的頭像
    vickieg11m1

    waynepearlep

    vickieg11m1 發表在 痞客邦 留言(0) 人氣()