Error "undefined reference to pointer"

Hola todo el mundo:

Se me produce un error en compilación de "undefined reference to pointer"

Os cuento como tengo desarrollado el software:

En una libreria que llamaremos LIB1.h y en su correspondiente fichero LIB1.cpp tengo declarada la siguiente matriz de datos que se guardan en memoria PROGMEM

const word* const Tablas_CVs [] PROGMEM =
{
    Numbers_CVs,
    CVs_Defaults,
    CVs_Masks,
    CVs_Val_Min,
    CVs_Val_Max
};

El dato de esta matriz (o puntero) es usada en otras librerias de clases que llamaremos LIB2.h y LIB2.cpp
Una de las funciones de esta libreria es una función de inicialización que está declarada como:
boolean DCC_Class::Init (byte pin_ACK, byte pin_Boton_Prog, word * Tablas, void (* _funct_excep) (word, byte, byte))

y dentro de esta función realizo una asignación a una variable privada de la clase del tipo word * MATRIZ_CVs
y realizo una asignación tan sencilla como MATRIZ_CVs = Tablas;

En el fichero principal del programa (el .ino) declaro:

extern const word* const Tablas_CVs;

Igualmente en el .ino llamo a la funcion de inialización de la clase anteriormente explicada.

e2prom_empty = DCC.Init (PIN_DCC_ACK, 0, (word *) Tablas_CVs, ptr_funct_EXCEPTION_POKE)

El error que da en compilación es el siguiente:

D:\ARDUINO_WORK\DESARROLLOS\DECODER_CARRO_v3\libraries\LIB2/LIB2.cpp:72: undefined reference to `Tablas_CVs'
No entiendo el por qué se produce ese error cuando todo creo que está correctamente declarado.

Por favor si alguien pudiera echarme una mano para saber donde estoy cometiendo el error sería muy de agradecer.

Muchas gracias por adelantado.

Porque pones const word* const Tablas_CVs PROGMEM
El segundo const me hace ruido.
La documentación dice

const dataType variableName[] PROGMEM = {}; // use this form
const PROGMEM dataType variableName[] = {}; // or this one
const dataType PROGMEM variableName[] = {}; // not this one

tu forma de definirlo no me parece correcta.
quedate con

const word* Tablas_CVs PROGMEM =
{
    Numbers_CVs,
    CVs_Defaults,
    CVs_Masks,
    CVs_Val_Min,
    CVs_Val_Max
};

Esta entrada define un array de pointers (word*). Entonces, el tipo de Tablas_CVs mismo será un pointer a un pointer, word**

No puede utilizar una matriz anónima en una declaración externa.
Especificar un número explícito de elementos en una definición y declaración de matriz:

const word* const Tablas_CVs [5] PROGMEM =
{
    Numbers_CVs,
    CVs_Defaults,
    CVs_Masks,
    CVs_Val_Min,
    CVs_Val_Max
};
...

extern const word* const Tablas_CVs[5];

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.