Autor
|
Tema: [Error] ¿Porqué no compila este simple programa? (Leído 2,847 veces)
|
Zodiak98
Desconectado
Mensajes: 120
|
Hola amigos, bueno este tema lo hago porqué me puse a practicar con los archivos de cabecera, pero tengo un error al compilar me sale estos 2 errores: undefined reference to `suma(int, int)' undefined reference to `resta(int, int)'
Acá están los archivos con las instrucciones: //main.cpp #include "operaciones.h" int main() { int resultadoSU = suma(4,5); int resultadoRE = resta(12,4); printf("El resultado de la suma es: %d \n",resultadoSU); printf("El resultado de la resta es: %d \n",resultadoRE); std::cin.get(); return 0; }
//operaciones.h #ifndef OPERACIONES_H_INCLUDED #define OPERACIONES_H_INCLUDED #include <iostream> #include <stdio.h> int suma(int x , int y); int resta(int x , int y); #endif
//operaciones.cpp #include "operaciones.h" int suma(int x , int y){ return ( x + y ); } int resta(int x , int y){ return ( x - y ); }
Qué estoy haciendo mal?
|
|
|
En línea
|
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
El caso es que el compilador no te incluye automáticamente los archivos de implementación. Puedes probar a dejar el archivo de cabecera así: //operaciones.h #ifndef OPERACIONES_H_INCLUDED #define OPERACIONES_H_INCLUDED #include <iostream> #include <stdio.h> int suma(int x , int y); int resta(int x , int y); #include "operaciones.cpp" <--- Fijate en esto #endif
Y quitar el include en operaciones.cpp. Otra opción sería crear una biblioteca estática o dinámica. Saludos.
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
Zodiak98
Desconectado
Mensajes: 120
|
Hehe gracias me funciono. Pero he visto varios vídeos que no incluyen el archivo de implementación al final de la cabecera, y ellos utilizan Code::Blocks, que es el qué yo utilizo.
|
|
|
En línea
|
|
|
|
aguml
Desconectado
Mensajes: 378
|
A mi asi me funciona perfectamente: #include "operaciones.h" int main(int argc, char* argv[]) { int resultadoSU = suma(4,5); int resultadoRE = resta(12,4); printf("El resultado de la suma es: %d \n",resultadoSU ); printf("El resultado de la resta es: %d \n",resultadoRE ); return 0; }
//operaciones.c #include "operaciones.h" int suma(int x, int y){ return ( x + y ); } int resta(int x, int y){ return ( x - y ); }
//operaciones.h #ifndef operacionesH #define operacionesH #include <stdio.h> int suma(int x , int y); int resta(int x , int y); #endif
El problema es que usas una mezcla entre C y C++ mezclando archivos de C con archivos de C++. Si usas un .cpp tienes que usar un .hpp o al menos indicarlo como bien te idica el amigo o si no usa un solo tipo y no tendras problemas. Otra cosa ¿incluir iostream solo para una pausa? con lo bien que funciona getc o getchar y ya estan en stdio.h jejeje.
|
|
|
En línea
|
|
|
|
edr89
Desconectado
Mensajes: 105
|
Otra cosa ¿incluir iostream solo para una pausa? con lo bien que funciona getc o getchar y ya estan en stdio.h jejeje.
getch() hace pausas y no muestra caracteres, tampoco necesita parametros, me gusta. Hola amigos, bueno este tema lo hago porqué me puse a practicar con los archivos de cabecera, pero tengo un error al compilar me sale estos 2 errores
tengo un archivo de cabecera para un codigo y trate de incluir toda la informacion del preprocesador ahi, en este caso los prototipos de tus funciones basta que esten en el archivo.h y lo incluyas en tu codigo o las declares directamente antes de main().
|
|
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
El caso es que el compilador no te incluye automáticamente los archivos de implementación. Puedes probar a dejar el archivo de cabecera así: //operaciones.h #ifndef OPERACIONES_H_INCLUDED #define OPERACIONES_H_INCLUDED #include <iostream> #include <stdio.h> int suma(int x , int y); int resta(int x , int y); #include "operaciones.cpp" <--- Fijate en esto #endif
Y quitar el include en operaciones.cpp. Otra opción sería crear una biblioteca estática o dinámica. Saludos. Joe Dani, no recomiendes esas chapuzas xDDDD Lo de la biblioteca estática es mejor. Para ello tienes que añadir el archivo .cpp en tu IDE.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
porque me sale este error
« 1 2 »
Programación Visual Basic
|
shadow.darknesses
|
11
|
4,600
|
20 Enero 2007, 16:29 pm
por shadow.darknesses
|
|
|
Programa que compila, pero error en consola
Java
|
AndenBomber
|
1
|
2,781
|
29 Mayo 2008, 19:49 pm
por HadesDark
|
|
|
[SOLUCIONADO] Porque da este error ??
PHP
|
Diabliyo
|
1
|
1,929
|
17 Julio 2008, 17:49 pm
por Diabliyo
|
|
|
me podrian decir porque no compila este codigo?
Programación C/C++
|
gwennnnnn26
|
2
|
1,910
|
2 Mayo 2017, 01:39 am
por MAFUS
|
|
|
porque no compila este codigo
Programación C/C++
|
gwennnnnn26
|
1
|
2,696
|
6 Mayo 2017, 20:37 pm
por MAFUS
|
|