[ Foro de C ]

Crear un archivo de cabecera y otro de implementacion

10-Aug-2014 00:00
Francisco Snake
1 Respuestas

Hola, entiendo que cuando uno quiere tener en archivos separados, las funciones que se van a usar, lo correcto sería tener un archivo de cabecera, de extensión .h, solo con los prototipos de las funciones, y otro archivo de extension .c o .cpp que tiene el desarrollo de las mismas. Luego en el programa principal solo es necesario escribir #include "archivodecabecera.h" y las llamadas a las funciones deberían funcionar. Mi problema es al hacer todo esto, que evidentemente lo estoy haciendo mal.

Hice un programa muy simple para probarlo, el programa es:


#include <stdio.h>
#include "suma.h"

int main (void){
    int x = 4, y = 5;
    
    printf ("La suma es: %d\n", suma (4, 5));
    
    getchar ();
    return 0;
}



El archivo de cabecera (que se llama "suma.h") tiene:


int suma (int a, int b);



Y el archivo donde están las funciones implementadas (que se llama "suma.cpp") es:


#include <stdio.h>
#include "suma.h"

int suma (int a, int b){
    return (a + b);
}



Ustedes se darán cuenta mejor que yo porque, pero cuando intento compilar esto con el devc++ no funciona, me da un error "undefined reference to `suma(int, int)'". Asumo que es porque el programa principal no reconoce en ningún momento al archivo donde están desarrolladas las funciones. Pero el tema es que en los ejemplo lo vi así :S

Leí que se puede compilar tecleando los nombres de los archivos en la línea de comandos, pero no entiendo qué es la línea de comandos ni donde está, en ningún lado lo vi enteramente explicado, yo hace poco empecé a leer algunos libros y tutoriales y en todos, lo que yo hacía para compilar es apretar el botón que dice "compilar" del compilador, en sí, no entiendo porque eso no funciona :S

Hay algunas preguntas extra que tengo, como por ejemplo, por qué no debería incluir el desarrollo de las funciones en el mismo archivo de cabecera, ya que eso sí me lo toma y se compila bien el programa. Lo intento hacer así porque leí que no es correcto que en el archivo de cabecera estén desarrolladas las funciones, y el desarrollo debe estar en un archivo aparte de la misma extensión que el programa común, y que ese archivo llame con #include al archivo de cabecera, pero no sé en realidad por qué...

Bueno, en fin, si alguien me puede ayudar, le estoy agradecido! :)


12-Aug-2014 20:32
Nacho Cabanes (+83)

Dev-C++ no es adecuado para programas formados por múltiples ficheros: tendrás que "crear un proyecto" e incluir en él todos ellos, o de los contrario no funcionará correctamente.

La línea de comandos es fácil de encontrar en Linux, pero mucho menos intuitiva (para un programador) en Windows.

Yo te recomendaría instalarte VirtualBox y crear una máquina virtual de Linux Mint, porque considero que el mejor entorno para aprender C es usar un Linux, pero entiendo que eso asusta a mucha gente. Pero... C es un lenguaje que asusta. Si eres valiente y quieres aprender C, deberías hacerlo con herramientas "más naturales" que Dev-C++, porque te oculta unos detalles que deberías conocer y te complica otras cosas que deberían ser fáciles (como lo que intentas tú en este caso).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)