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.