2011-02-26 29 views
33

Quiero escribir mis funciones C en 2 archivos .c separados y usar mi IDE (bloques de código) para compilar todo junto.¿Cómo dividir un programa en C en varios archivos?

¿Cómo configuro eso en bloques de código?

¿Cómo llamo a las funciones en un archivo .c desde el otro archivo?

+0

¿Cuál es el IDE? – Simon

+3

No veo cómo esto podría ser más vago. ¿Ya has probado algo? ¿Conoces el lenguaje C? ¿Sabes lo que es un encabezado? –

+6

En el caso de que no tenga conocimiento de esto: c generalmente se compila, mientras se habla * de "llamar [ing] archivos para usarlos" * tiene un sentido de lenguaje interpretado. El flujo de trabajo para los lenguajes compilados difiere ligeramente del de los idiomas interpretados (aunque muchos IDE ocultarán la diferencia). – dmckee

Respuesta

88

La pregunta es muy vaga, creo que quiere decir "cómo separar las funciones en varios archivos .c y hacer que el IDE compile todo junto". Si me equivoco (por ejemplo, me refiero a "cómo usar las funciones definidas en los archivos .c del propio IDE"), solo dígame en los comentarios y con gusto actualizaré/eliminaré mi respuesta.

En general, se deben definir las funciones de los dos .c archivos separados (por ejemplo, A.c y B.c), y poner sus prototipos en los encabezados correspondientes (A.h, B.h, recordar el include guards).

Siempre que en el archivo .c necesite usar las funciones definidas en otro .c, tendrá #include el encabezado correspondiente; entonces podrás usar las funciones normalmente.

Todos los archivos .c y .h se deben agregar a su proyecto; si el IDE le pregunta si deben compilarse, debe marcar solo el .c para la compilación.

ejemplo rápida:

Functions.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 

Functions.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; 
} 

Main.c

#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; 
} 
+0

yo uso los bloques de código – amin

+0

sí, tienes razón – amin

+0

si quiero usar un archivo .c ¡también debería hacer su archivo de encabezado (.h)! – amin

Cuestiones relacionadas