# Error "undefined reference to pointer"

**URL:** <https://forum.arduino.cc/t/error-undefined-reference-to-pointer/1165941>\
**Category:** Software\
**Created:** [September 6, 2023, 5:46pm UTC](https://forum.arduino.cc/t/error-undefined-reference-to-pointer/1165941 "2023-09-06T17:46:15Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![LOKOMOTORO\_460](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/lokomotoro_460/32/216922_2.png) [@LOKOMOTORO\_460](https://forum.arduino.cc/u/LOKOMOTORO_460)\
**Post date:** [September 6, 2023, 5:46pm UTC](https://forum.arduino.cc/t/error-undefined-reference-to-pointer/1165941/1 "2023-09-06T17:46:15Z")

</div>

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

```arduino
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.

---

<div class="post-metadata">

**Author:** ![Surbyte](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/surbyte/32/217404_2.png) [@Surbyte](https://forum.arduino.cc/u/Surbyte)\
**Post date:** [September 6, 2023, 9:21pm UTC](https://forum.arduino.cc/t/error-undefined-reference-to-pointer/1165941/2 "2023-09-06T21:21:59Z")

</div>

> [@LOKOMOTORO\_460](#):
>
> const word\* const Tablas\_CVs;

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

```arduino
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

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

```

---

<div class="post-metadata">

**Author:** ![b707](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/b707/32/854321_2.png) [@b707](https://forum.arduino.cc/u/b707)\
**Post date:** [September 7, 2023, 7:40am UTC](https://forum.arduino.cc/t/error-undefined-reference-to-pointer/1165941/3 "2023-09-07T07:40:24Z")

</div>

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

> [@LOKOMOTORO\_460](#):
>
> ```arduino
> const word* const Tablas_CVs [] PROGMEM =
> {
> Numbers_CVs,
> CVs_Defaults,
> CVs_Masks,
> CVs_Val_Min,
> CVs_Val_Max
> };
> 
> ```

---

<div class="post-metadata">

**Author:** ![b707](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/b707/32/854321_2.png) [@b707](https://forum.arduino.cc/u/b707)\
**Post date:** [September 7, 2023, 7:48am UTC](https://forum.arduino.cc/t/error-undefined-reference-to-pointer/1165941/4 "2023-09-07T07:48:54Z")

</div>

> [@LOKOMOTORO\_460](#):
>
> No entiendo el por qué se produce ese error cuando todo creo que está correctamente declarado.

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:

```arduino
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];

```

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [March 5, 2024, 7:49am UTC](https://forum.arduino.cc/t/error-undefined-reference-to-pointer/1165941/5 "2024-03-05T07:49:39Z")

</div>

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