Autor Tema: Sobre la compilacion multiple de ccs c  (Leído 2284 veces)

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

Desconectado Carlos2302

  • PIC16
  • ***
  • Mensajes: 110
Sobre la compilacion multiple de ccs c
« en: 11 de Diciembre de 2019, 13:06:08 »
Estoy leyendo sobre este tema de la compilacion multiple que ofrece Ccs C, pero no le encuentro sentido a mi logica. Tal vez no lo entiendo y por eso quiero que me lo expliquen mejor ustedes. Este es el enlace de donde estoy leyendo.
http://www.ccsinfo.com/faq.php?page=multi_comp_units
Lo que no entiendo es la necesidad de realizar multiples compilaciones, porque si yo incluyo los archivos con los #include, eso no quiere decir entonces que el compilador va a tomas lo que tenga ahi en esos archivos y me los va a compilar. Eso es lo que yo entiendo, no se si es asi o no.
En el mismo enlace esta el archivo del ejemplo para la compilacion multiple.
Alguien tan amable que me lo explique mejor. Gracias a todos.
Gracias a Dios por aquellas personas que ayudan sin esperar nada a cambio. Dios los bendiga hoy mañana y siempre.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Sobre la compilacion multiple de ccs c
« Respuesta #1 en: 11 de Diciembre de 2019, 14:52:54 »
Es totalmente valido hacerlo como se hacen en CCS, es decir incluir archivos .c
Pero desde mucho tiempo se trata de seguir un estándar, y que hace que solo incluyas los .h (header files)

Por supuesto que podes tener problemas, por ejemplo si tenes algo asi:

#include "operaciones.c"
#include "hardware.c"

En el cual operaciones necesita funciones de hardware y hardware necesita operaciones de C, implica crear un archivo nuevo con esas funciones en comun, y terminarias dispersando las funciones en otros archivos, haciendo dificil el mantenimiento del codigo. Incluir en operaciones.c el hardware.c podria ser una ventaja, pero tambien una desventaja en el sentido que puede NO necesitarse. Y seguro que hay mas posibles puntos de error. Asi tambien tiene algunas ventajas, pero que dependen unicamente del compilador.

En cambio, puedo usar la multiple compilacion, y en operaciones.c puedo agregar el .h de hardware, y viceversa. de esa forma no tengo problemas.

El problema de CCS es que es uno de los pocos compiladores C (que conozco es el unico) que no se alienta a la compilacion multiple, todos los ejemplos, todos los programas incluyen archivos .c. Los demas se manejan todo mediante .h y siguiendo el estandar. Entonces pasar de un compilador C de ST a uno de TI, a uno de Microchip como el XC8, no te supone demasiados cambios (solo los del propio compilador y hardware), y podes usar los archivos relativamente facil, mientras que con CCS necesitas cambiar bastante, y mas si te apoyas sobre "librerias" que encontras por internet. Hablando de codigos un poco mas complejos ( FS /Ethernet/etc)

Otro problema es que si queres compilacion multiple en CCS, las directivas las tenes que poner en todos los archivos. Algo absurdo en otros compiladores.
« Última modificación: 11 de Diciembre de 2019, 14:57:00 por KILLERJC »

Desconectado Carlos2302

  • PIC16
  • ***
  • Mensajes: 110
Re:Sobre la compilacion multiple de ccs c
« Respuesta #2 en: 11 de Diciembre de 2019, 20:30:28 »
OK ya entiendo, algo no todo, :oops: porque si ka idea es de colocar los #include en donde los vaya a utilizar simplemente.
Ahora una nueva pregunta que diferencia existe entre los .c y los .h,
yo en mi caso coloco todo lo referente a configuración, variables globales y constantes en el .h y las funciones en los .c bueno asi lo hago yo y como siempre hago trabajos sencillos pues casi nunca o mejor dicho nunca tengo problemas.
Gracias a Dios por aquellas personas que ayudan sin esperar nada a cambio. Dios los bendiga hoy mañana y siempre.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Sobre la compilacion multiple de ccs c
« Respuesta #3 en: 11 de Diciembre de 2019, 23:09:59 »
Te lo vuelvo a decir.. Usualmente el estandar de programacion que casi todos adoptaron fue:

.h:

Nada de codigo: nada ejecutable
Nada que ocupe memoria.
Definiciones, por ejemplo definir una estructura, definir los prototipos de las funciones a usar en el .c y en los que incluyas. definir una union, etc


.c:
Todo lo ejecutable y que ocupa espacio.
Aca definis variables que vas a ocupar en tu .c, funciones, donde tenes el codigo.

Citar
OK ya entiendo, algo no todo, :oops: porque si ka idea es de colocar los #include en donde los vaya a utilizar simplemente.

Podes probar si tenes algun otro compilador C.
Si pensamos en como trabaja el compilador, hacerlo como lo haces no es distinto de escribir todo en un solo archivo, a pesar que tenes varios, el resultado es como copiar y pegar todo en un solo archivo.

De la otra forma, cada archivo .c se compila de forma separada y se generan simbolos, que luego el linker une.