static u16 *mapMemory
Con esto has declarado mapMemory como un puntero a tipo u16.
Para poder usar esa variable en una función, depende de lo que quieras hacer. Si lo que quieres es que la función, tras el proceso que sea, le asigne un valor, hay dos opciones:
- Que la función te devuelva un puntero a u16. Por ejemplo:
Código C:
Ver originalu16 *MiFuncion (lista_de_parametros); // Prototipo
u16 *MiFuncion (lista_de_parametros) // Implementacion
{
u16 *ptr;
// Aqui vendría el código...
return ptr;
// Conviene devolver NULL si el cálculo del puntero ha fallado
}
mapMemory = MiFuncion (lista_de_parametros); // Utilizacion
// OJO: Comprobar que el puntero retornado no es NULL
- Modificar el valor dentro de la función. Tendrías que pasar el puntero por referencia, es decir, con un puntero a puntero:
Código C:
Ver originalvoid MiFuncion (u16 **ptr); // Prototipo
void MiFuncion (u16 **ptr) // Implementación
{
// Aqui vendría el código...
*ptr = valor_calculado
}
MiFuncion (&mapMemory); // Utilización
Si lo que quieres es que la función trabaje con el valor al que apunta mapMemory, simplemente:
Código C:
Ver originalvoid MiFuncion (u16 *ptr); // Prototipo
void MiFuncion (u16 *ptr) // Implementacion
{
// Aqui vendría el código...
*ptr = resultado_del_proceso;
}
MiFuncion (mapMemory); // Utilizacion
En este último caso, tienes que asegurarte de que mapMemory tiene previamente un valor legal, de lo contrario te encontrarás con una violación de segmento.
Saludos,