1.75 VVL

Visibilidad Variables con/entre Librerías

 

 

Con la ficha Librerías empecé a estudiar las ventajas/inconvenientes de  su utilización.

 

Después  prepare  dos Librerías:

TutoLib .-    Con funciones generales y comunicaciones
TutoDCM .- Funciones con Vectores y Matrices

 

Y posteriormente estudie la forma de externalizarlas.
 

Ahora me han empezado a surgir algunos problemas:

Al empezar a utilizar las Librerías más a fondo
Trabajando con Librerías externalizadas

Así que me he puesto a experimentar para “aclarar” conceptos

Y hasta he encontrado algo que desconocía.

 

Para las pruebas he utilizado:

LibFG  .- Programa Arduino
TutoF .- Librería Externalizada
TutoG .- Librería normal

Los incluyo por si los queréis utilizar en vuestras propias pruebas.

 

 

Estas son mis notas.

(Incluyo conceptos elementales, para que no se me olviden ).

 

Cuando digo  “en  Arduino” me refiero en el código de LibFG.

 

 

Variables definidas en Arduino  (antes de setup)

 
Las funciones de TutoF y TutoG

    No “las ven” y por tanto dan  error  (Ver sumar en TutoF)

 

Sin embargo se pueden pasar como parámetros a las funciones de TutoF y TutoG.  
Evidentemente las funciones NO las actualizan

 

Ejemplo: dato01

 

 

Variables definidas en las Librerías  (antes de class TutoX { )

 

Como byte / int / long  (Ejemplo: dato02)

 

Aparece el ERROR: multiple definition of `dato02'

 

Como const  sin darle valor   (Ejemplo: dato03)

 

Aparece el ERROR:  uninitialized const 'dato03'

 

Como const  asignándole un  valor  (Ejemplo: dato04)

No aparece error y se puede utilizar en todas partes ( Arduino /TutoF / TutoG )

 

Si se trata de modificar asignándole un nuevo valor, aparece:

 
ERROR: assignment of read-only variable 'dato04'

 

Como static sin asignarle o asignándole un  valor  (Ejemplo: dato05 y dato06)

 

Arduino y la otra Librería inicializan una variable en cada parte,
que mantiene los valores entre: subrutinas /  funciones / ciclos

Y que son independiente de las modificaciones que sufra en las otras partes

 

 

Parámetros en Librerías

 
En las librerías podemos incluir parámetros, que se pueden utilizar en las tres partes ( Arduino /TutoF / TutoG )

#define TRES 3

 

Recordar que utilizando esta forma de definir constante NO se ocupa memoria,
dado que el compilador simplemente sustituye el parámetro por el valor.

 

Para más información ver:

http://www.arduino.cc/en/Reference/Define

 

¡Y la SORPRESA ¡

 

No solo se pueden utilizar las funciones de las Librerías….

Se pueden llamar también a las variables que hayan sido declaradas dentro de la class como public.

 

Ejemplo ( publicF )

 

OJO.- A estas variables NO se les puede asignar un valor inicial

 public:

TutoF ();      // Constructor de la clase

int datoA=2;

ERROR:C++ forbids in-class initialization of non-const static member 'datoA'

 

Naturalmente si la variable se declara como private

NO se puede llamar desde el exterior de la Librería . Ejemplo ( privateF )

ERROR : privateF is private

 

Pero dentro de las funciones de la propia librería, si se ven estas variables.

 

OJO.- Aunque sean private

Los valores se pasan entre funciones dentro de la Librería

 

Enlaces:

Librerías

TutoLib

TutoDCM

Externalizar

 

 
ċ
LibFG.pde
(2k)
Marcos Echeita,
11 ene. 2011 10:39
ċ
Marcos Echeita,
11 ene. 2011 10:39
ċ
Marcos Echeita,
11 ene. 2011 10:39
Comments