Autor Tema: ¿Hay alguna manera de crear clases y constructores en C18?  (Leído 3172 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:¿Hay alguna manera de crear clases y constructores en C18?
« Respuesta #15 en: 14 de Noviembre de 2016, 12:37:29 »
A otra cosa que me confunde mucho al intentar lo de el constructor y las clases en c, el tema de configurar el hardware en arduino se puede hacer desde el constructor pero en c18 veo que se hace fuera en un archivo .h

Yo creo que si nos cuentas qué quieres hacer te podemos echar una mano para codificarlo en c de forma eficiente.

Un saludo.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re:¿Hay alguna manera de crear clases y constructores en C18?
« Respuesta #16 en: 15 de Noviembre de 2016, 13:02:13 »
si si, yo primero quiero hacerlo yo y luego ya lo pongo por aquí a ver que me dicen, ahora estoy implementado un driver para el manejo de termistores, cuando tenga algo concreto y que funciona lo paso, me explico el driver me funciona perfecto lo que me gustaría hacer algo como si fuera c++ que veo que es más fácil de utilizar luego las funciones, pero lo que no me gusta es que de momento uso muchas variables globales y eso ya no me mola tanto, bueno ya digo algo
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:¿Hay alguna manera de crear clases y constructores en C18?
« Respuesta #17 en: 15 de Noviembre de 2016, 17:23:08 »
Si utilizas variables globales dentro de un archivo en c y no las declaras externas fuera de ese archivo, es como si fueran variables privadas de una clase.
Sólo podrás verlas y manejarlas con las funciones de ese módulo (archivo) de c.
Así te aseguras que el resto del programa no las toque, sólo tu librería. Eso te dará el control que quieres sobre las variables globales.

Un saludo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Hay alguna manera de crear clases y constructores en C18?
« Respuesta #18 en: 15 de Noviembre de 2016, 18:18:05 »
Si utilizas variables globales dentro de un archivo en c y no las declaras externas fuera de ese archivo, es como si fueran variables privadas de una clase.
Sólo podrás verlas y manejarlas con las funciones de ese módulo (archivo) de c.
Así te aseguras que el resto del programa no las toque, sólo tu librería. Eso te dará el control que quieres sobre las variables globales.

Un saludo.

La primer sentencia a mi parecer esta mal. Declarando una variable como "global" (fuera de la funcion en el archivo .c) y no ponerle el static implica que su simbolo puede ser accedido desde otro lugar.
Es el caso que sucede si en el main.c creas la misma variable (mismo nombre y tipo) podes acceder a esta como si fuera compartido, ambos archivos acceden a la misma variable. En si, estas polucionando el espacio de simbolos.

Si queres que unicamente puedan ser accedidos desde el archivo.c concreto, usas el static (fuera de las funciones). Eso limita la visibilidad a unicamente el archivo en cuestion (aunque no probe crear otra variable con el mismo nombre, tipo y puesto como static).

-------

EDIT:

En realidad el static afectaria al "Linkage" (no se como se traduce), pero basicamente viene por el Linker quien es quien decide la posicion de las variables. Al no tener "Linkage" externo no deberia poder ser accedido desde otro lugar. O pensado de otra forma, el simbolo de esa variable unicamente pertenece a ese archivo y no es visto desde los otros.
« Última modificación: 15 de Noviembre de 2016, 18:26:42 por KILLERJC »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:¿Hay alguna manera de crear clases y constructores en C18?
« Respuesta #19 en: 15 de Noviembre de 2016, 19:21:36 »
Si. A eso me refería. Variables "globales" en un archivo (definidas fuera de las funciones) e inaccesibles para otros archivos se comportan de manera semejante a las variables privadas de las clases.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:¿Hay alguna manera de crear clases y constructores en C18?
« Respuesta #20 en: 16 de Noviembre de 2016, 10:43:18 »
Este tipo de programación:

librería.c
Código: C
  1. static int var1;
  2. int libreria_var1_value(void) { return var1; }
  3. void libreria_var1_assign(int value) { var1 = value; }

librería.h
Código: C
  1. int libreria_var1_value(void);
  2. void libreria_var1_assign(int value);

main.c
Código: C
  1. #include "libreria.h"
  2. int main(void) {
  3.    libreria_var1_assign(30);
  4.    printf("%d\n", libreria_var1_value());
  5. }


 

anything