Quiero escribir mis funciones C en 2 archivos .c separados y usar mi IDE (Código::Bloques) para compilar todo junto.
¿Cómo configuro eso en Code::Blocks?
¿Cómo llamo funciones en uno? .c
archivo desde dentro del otro archivo?
amín
Quiero escribir mis funciones C en 2 archivos .c separados y usar mi IDE (Código::Bloques) para compilar todo junto.
¿Cómo configuro eso en Code::Blocks?
¿Cómo llamo funciones en uno? .c
archivo desde dentro del otro archivo?
Mateo Italia
En general, debe definir las funciones en los dos .c
archivos (por ejemplo, A.c
y B.c
), y poner sus prototipos en los encabezados correspondientes (A.h
, B.h
recuerda el incluir guardias).
siempre que en un .c
archivo que necesita para utilizar las funciones definidas en otro .c
Vas a #include
el encabezado correspondiente; entonces podrá usar las funciones normalmente.
Todos .c
y .h
los archivos deben agregarse a su proyecto; si el IDE te pregunta si hay que compilarlos, debes marcar solo los .c
para la compilación
Ejemplo rápido:
Funciones.h
#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
/* ^^ these are the include guards */
/* Prototypes for the functions */
/* Sums two ints */
int Sum(int a, int b);
#endif
Funciones.c
/* In general it's good to include also the header of the current .c,
to avoid repeating the prototypes */
#include "Functions.h"
int Sum(int a, int b)
{
return a+b;
}
C Principal
#include <stdio.h>
/* To use the functions defined in Functions.c I need to #include Functions.h */
#include "Functions.h"
int main(void)
{
int a, b;
printf("Insert two numbers: ");
if(scanf("%d %d", &a, &b)!=2)
{
fputs("Invalid input", stderr);
return 1;
}
printf("%d + %d = %d", a, b, Sum(a, b));
return 0;
}
si quiero usar un archivo .c, ¡debería crear su archivo de encabezado (.h) también!
– amin
26 de febrero de 2011 a las 18:26
solo quiero dividir mi programa completo en archivos .c y luego IDE compilarlos juntos
– amin
26 de febrero de 2011 a las 18:31
los #ifdef
/#define
/#endif
están ahí para evitar problemas en caso de múltiples inclusiones del mismo encabezado. Echa un vistazo a la página sobre incluir guardias en Wikipedia – todo está explicado allí. Por cierto, dado que mi respuesta resolvió tu problema, puedes considerar marcarla como aceptada (¡gracias!). :)
– Mateo Italia
28 de febrero de 2011 a las 22:41
@lcmgcd en el orden que prefiera, cada uno es completamente independiente del otro y, de hecho, en las máquinas modernas se compilan varios archivos en paralelo. Es solo en la etapa de vinculación que se unen.
– Mateo Italia
21 de abril de 2018 a las 16:46
@learner, lamentablemente, eso depende del IDE/sistema de compilación exacto que esté utilizando, por lo que no creo que pueda agregarlo fácilmente. En última instancia, es una parte que es mejor dejar para las respuestas específicas de cada sistema de compilación.
– Mateo Italia
30 de noviembre de 2021 a las 21:28
Las personas necesitarán saber qué IDE está utilizando para decirle cómo hacer algo en él.
– J.Taylor
26 de febrero de 2011 a las 17:54
No veo cómo esto podría ser más vago. ¿Ya probaste algo? ¿Conoces el lenguaje C? ¿Sabes lo que es un encabezado?
– Mike Caron
26 de febrero de 2011 a las 17:54
En caso de que no esté al tanto de esto: c generalmente se compila, mientras se habla de “llamar[ing] archivos para usarlos” tiene una sensación de lenguaje interpretado. El flujo de trabajo para los lenguajes compilados difiere ligeramente del de los lenguajes interpretados (aunque muchos IDE le ocultarán la diferencia).
– dmckee — gatito ex-moderador
26 de febrero de 2011 a las 17:57