
Crear un archivo de cabecera y otro de implementacion
Publicado por Fran (1 intervención) el 10/08/2014 19:48:30
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:
El archivo de cabecera (que se llama "suma.h") tiene:
Y el archivo donde están las funciones implementadas (que se llama "suma.cpp") es:
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! :)
Hice un programa muy simple para probarlo, el programa es:
1
2
3
4
5
6
7
8
9
10
11
#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:
1
int suma (int a, int b);
Y el archivo donde están las funciones implementadas (que se llama "suma.cpp") es:
1
2
3
4
5
6
#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! :)
Valora esta pregunta


0