Me doy cuenta de que el compilador es específico, pero mi expectativa es que la ubicación del especificador de lejos tenga sentido para aquellos que realmente entienden los punteros.Uso de los punteros de función de lejos
Tengo dos aplicaciones que comparten todo el espacio de memoria del procesador.
la aplicación A tiene que llamar a la función foo que existe en aplicación B.
Sé que la posición de memoria de función foo.
Así que esto debería funcionar, en aplicación R:
typedef int (* __far MYFP)(int input);
void somefunc(void)
{
int returnvalue;
MYFP foo;
foo = (MYFP) 0xFFFFFA;
returnvalue = foo(39);
}
- ¿Está el __far en el lugar correcto en el typedef?
- ¿Debo agregar __far al molde (MYFP)?
- Alguna información sugiere que la llamada a foo no necesita ser desreferenciada, ¿cuál es su experiencia?
¿Qué más parece incorrecto o podría tratar de lograrlo?
¿Hay una mejor manera de hacerlo?
Editar:
Se trata de un dispositivo embebido (dispositivo de Freescale S12XEQ) utilizando código de Guerrero. Es un dispositivo de 16 bits con un espacio de memoria de 24 bits, así que sí, está segmentado/en bancos.
-Adam
¿Puede dar más información? ¿En qué plataforma estás? Qué compilador estas usando? – grieve