Nada, que no hay forma.
Respecto a lo de quitar const en la declaración de los arrays os adjunto un pequeño código que no se puede compilar por insuficiente RAM
#include <16F886.h> // Cabecera del Micro Utilizado
struct Estructura {
long Valor_Long;
char Valor_Char;
long *Array_Long;
};
long Array_A[] = {
386, 491, 187, 290, 386, 491, 187, 290, 386, 491, 187, 290, 386, 491, 187, 290, 945, 777, 187, 290, 945,
};
long Array_B[] = {
503, 177, 431, 714, 874, 102, 503, 177, 431, 714, 874, 102, 503, 177, 431, 714, 874, 102, 431, 714, 874, 102,
};
long Array_C[] = {
386, 491, 187, 290, 386, 491, 187, 290, 386, 491, 187, 290, 386, 491, 187, 290, 386, 491, 187, 290, 386,
};
long Array_D[] = {
503, 177, 431, 714, 874, 102, 503, 177, 431, 714, 874, 102, 503, 177, 431, 714, 874, 102, 431, 714, 874, 102,
};
long Array_E[] = {
386, 491, 187, 290, 386, 491, 187, 290, 386, 491, 187, 290, 386, 491, 187, 290, 386, 491, 187, 290, 386,
};
long Array_F[] = {
503, 177, 431, 714, 874, 102, 503, 177, 431, 714, 874, 102, 503, 177, 431, 714, 874, 102, 431, 714, 874,
};
long Array_G[] = {
386, 491, 187, 290, 386, 491, 187, 290, 386, 491, 187, 290, 290, 386, 491, 187, 290, 333, 491, 187, 290, 888
};
long Array_H[] = {
503, 177, 431, 714, 874, 102, 503, 177, 431, 714, 874, 102, 503, 177, 431, 714, 874, 102, 431, 714, 874,
};
const struct Estructura Valores[] = {
{ 12345,
67,
Array_A,
},
{ 54321,
76,
Array_B,
},
{ 12345,
67,
Array_C,
},
{ 54321,
76,
Array_D,
},
{ 12345,
67,
Array_E,
},
{ 54321,
76,
Array_F,
},
{ 12345,
67,
Array_G,
},
{ 54321,
76,
Array_H,
},
};
void main() {
}
La única solución es asignar longitud fija al array en la declaración de la estructura pero hay que darle la máxima por lo que al crear la estructura se desperdicia una cantidad tremenda de memoria de programa, sobre todo si los arrays son de longitud muy desigual, lo que es mi caso precisamente.
A ver si a alguien se le ocurre la manera de compilar este código.