Autor Tema: error al compilar  (Leído 3338 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado danifiguerola

  • PIC10
  • *
  • Mensajes: 24
Re: error al compilar
« Respuesta #15 en: 09 de Septiembre de 2015, 10:53:11 »
Proba lo siguiente:

Prototipá las variables globales dentro de los archivos .c que las utilizan, así:

extern const cultiu cultius[15];
extern const terra terres[9];
extern const float PI=3.1415392653;

etcétera, etcétera... Así no hará falta declararlas antes de las directivas #include en el .c principal. Eso sí, van después.

Igual lo que estás haciendo de usar variables globales es bastante feíto. No está prohibido, pero no es recomendable.

De hecho lo que hacés de dividir el código en varios .c es correcto; pero la principal razón de esto es la reusabilidad del código. Pero cuando quieras reutilizar ese archivo .c en el futuro, a modo de librería, no te va a servir porque usa variables globales que no están declaradas en el mismo, y te vas a tener que poner a trabajar de nuevo.

Lo correcto es pasar todo como parámetro (esos parámetros normalemente van declarados en un propotitpo de la función llamada en un archivo .h que acompaña al .c; lo que se llama interfaz de la librería). Si los structs pasados son grandes (por ejemplo tablas de datos), conviene pasarlos mediante un puntero, para no cargar tanto la pila. Y si la función llamada no los tiene que modificar el puntero para pasarlos tiene que ser "a constante".

Te dejo para leer:
https://es.wikipedia.org/wiki/Variable_externa (modificador extern)
http://stackoverflow.com/a/13555817 (paso de structs por valor y referencia)
http://stackoverflow.com/a/8728992 (compilar múltiples .c, usando cabeceras .h)
http://www.learncpp.com/cpp-tutorial/610-pointers-and-const/ (punteros a constantes)

Espero sirva. Slds.

PD: Supongo que esos nombres están en catalán. Mi mamá y mis tías todavía lo hablan, y me enseñaron algunos versitos de chico.




Ok. Gracias por los consejos y sugerencias. Voy a leerme los links.

A ver si poco a poco le voy pillando práctica al C.

P.D.: Estás en o cierto, los nombres están en catalán.


 

anything