SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: m0skit0 en Jueves 2 de Abril de 2009, 16:31

Título: Error "Definición múltiple de función"
Publicado por: m0skit0 en Jueves 2 de Abril de 2009, 16:31
Bueno ahora resulta que si no añado ningún .cpp (excepto ccoordenada.cpp) al proyecto y comento main() para que no contenga nada, compila:

[attachment=1:2tbpigas]compiled.jpg[/attachment:2tbpigas]

Pero si añado otro .cpp entonces:

[attachment=0:2tbpigas]no_compiled.jpg[/attachment:2tbpigas]

 :ph34r:  :ph34r:  :brickwall:
Título: Re: Error "Definición múltiple de función"
Publicado por: punteroNULO en Jueves 2 de Abril de 2009, 19:22
Sin más información se me ocurre que podría deberse a que se incluye un archivo de cabecera en dos módulos distintos y al enlazarlos se definen las mismas funciones dos veces.

Se puede evitar esto simplemente con una definición y una condición. Por ejemplo (archivo clases.h, por poner uno)
Código: C++
  1.  
  2. #ifndef clases_H
  3. #define clases_H
  4.  
  5. // contenido de la cabecera
  6.  
  7. #endif
  8.  
  9.  

La primera vez que se incluye el archivo no está definido clases_H, se cumple la condicion "#ifndef clases_H" define clases_H y el resto del contenido. Pero la segunda vez que se incluya ya estará defindo y por tanto se salta ese código y no se vuelven a redefinir las funciones.

Bueno, espero que se entienda más o menos.
Título: Re: Error "Definición múltiple de función"
Publicado por: m0skit0 en Viernes 3 de Abril de 2009, 09:26
Hm, claro, no había pensado en ello :good: Es lo que tiene el obfuscarse en una casilla y no ver más allá. Ya te cuento qué tal y muchas gracias.

EI: juntando mensajes.

¡Perfecto! ¡Funciona! ¡Muchísimas gracias!  B)

En clases.h:

Código: C++
  1. #define CLASES_H
  2.  
En cada .cpp

Código: C++
  1. //Para evitar redefiniciones
  2. #ifndef CLASES_H
  3. #include "clases.h"
  4. #endif
  5.  

 :good:  :good:
Título: Re: Error "Definición múltiple de función"
Publicado por: Eternal Idol en Viernes 3 de Abril de 2009, 09:53
Normalmente se pone esa condicion unicamente en las cabeceras, como te dijo punteroNULO, asi desde los modulos se sigue incluyendo directamente como siempre.
Título: Re: Error "Definición múltiple de función"
Publicado por: m0skit0 en Viernes 3 de Abril de 2009, 09:57
Ok, ya lo he corregido.

Gracias a ambos.