Diferencia entre .c y .h

#1
Hola, estoy programando microcontroladores PIC con CCS y tengo una pequeña duda. ¿Cuál es la diferencia entre un archivo .c y otro .h? En los proyectos que son algo grandes, me creo archivos .c que adjunto al programa principal, así como también adjunto los .h propios del compilador (librerías y demás) ¿Cuándo se usan unos y cuando se usan otros?

Un saludo.
 
#2
sephirot, la diferencia radica en que los .c son los módulos (es decir los programas) y los .h son definiciones de funciones, variables, etc.. Podrías definir todo dentro de los .c, pero al utilizar los .h queda más corto y ordenado el programa. Saludos.
 
#3
Hola agustinzzz, me queda más claro pero aún no del todo. ¿Me podrías decir un caso en el que usarías archivos .h creados por ti además de los propios del compilador? Yo es que siempre he creado .c con sus funciones y demás y no sabría donde usar un .h.

Otra pequeña duda. Cuando incluyes un .c mediante #include".c" el compilador es como si insertara en esa posición el archivo .c al que hacemos referencia. ¿Ocurre igual con los .h?, es decir, ¿el compilador inserta en esa posición el archivo .h?

Espero que se entiendan bien mis dudas. Un saludo.
 
#4
sephirot, yo uso los .h cuando tengo que definir funciones (procedimientos) para no agrandar el .c y que se vuelva muy complicado de seguir. En conclusión defino todas mis funciones en el .h.
Con respecto a tu duda, cuando usas la instrucción "#include" es lo mismo que el archivo que incluyas sea .c o .h o punto lo que quieras. Es como que estuviera todo dentro del mismo archivo y puedes usarlo normalmente.
Como ejemplo, imagina que escribes 100.000 líneas de código entre funciones y el programa principal. Si tienes que corregir una función y la debes buscar dentro de un único archivo se volvería un proceso largo y pesado, lo más probable es que te marees y termines modificando cualquier cosa...
Saludos.
 
Arriba