ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
618224
abivan (07.09.2015 11:32, просмотров: 2317)
Не выходит сделать вызов ф-ии со смещением по указателю PIC18 ht9.51pl3. Данный код работает на майкрософтовом компиляторе. Все 3 вызова попадают куда нужно( в ф-ю Finished) Если убрать все const то и в HT все начинает работать. Нужно чтобы структура находилась в кодовой памяти. typedef struct{ void (*pFinished)(void); void (*pLoaded)(void); void (*pRegular)(void); }t_Method; unsigned long dwTmp; static void Finished(void){ dwTmp=1; }; static void Loaded(void){ dwTmp=2; }; static void Regular(void){ dwTmp=3; }; const t_Method MethodIP = { Finished, Loaded, Regular }; typedef t_Method (*PF)(void); int main(){ unsigned long dwLocal; PF pF; const t_Method *pMethod; pMethod=&MethodIP; //ok (pMethod->pFinished)(); //ok pF=(PF)(pMethod->pFinished); // ok если в HT написать так typedef t_Method (const*PF)(void); dwLocal=dwTmp=(unsigned long )pF; (*pF)(); pF=*((PF*)pMethod+0); // вот это в HT никак не работает а нужен именно такой вызов со смещением dwLocal=dwTmp=(unsigned long )pF; (*pF)(); }