Я понимаю, что far зависит от компилятора, но я ожидаю, что размещение спецификатора far должно иметь смысл для тех, кто действительно понимает указатели.
Итак, у меня есть два приложения, которые разделяют все пространство памяти процессора.
Приложение A должно вызвать функцию foo, которая существует в приложении B.
Я знаю место в памяти функции foo.
Так что это должно работать, в приложении A:
typedef int (* __far MYFP)(int input);
void somefunc(void)
{
int returnvalue;
MYFP foo;
foo = (MYFP) 0xFFFFFA;
returnvalue = foo(39);
}
- Находится ли __far в нужном месте в typedef?
- Нужно ли добавлять __far к исполнению (MYFP)?
- Некоторая информация предполагает, что вызов foo не нуждается в разыменовании, каков ваш опыт?
Что еще по этому поводу выглядит неправильно, или я могу попытаться это сделать?
Есть ли лучший способ сделать это?
Edit:
Это на встроенном устройстве (устройстве Freescale S12XEQ), использующем Code Warrior. Это 16-битное устройство с 24-битным пространством памяти, так что да, оно сегментировано / объединено.
-Adam