Foros del Web » Programación para mayores de 30 ;) » C/C++ »

redefinición de un tipo estructura

Estas en el tema de redefinición de un tipo estructura en el foro de C/C++ en Foros del Web. Estoy haciendo un árbol binario y trato de hacer esto: Código: typedef struct nodo Nodo; typedef struct nodo { int informacion; Nodo* izquierda; Nodo* derecha; ...
  #1 (permalink)  
Antiguo 26/11/2012, 20:17
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
redefinición de un tipo estructura

Estoy haciendo un árbol binario y trato de hacer esto:

Código:
typedef struct nodo Nodo;
typedef struct nodo {
int informacion;
Nodo* izquierda;
Nodo* derecha;
} Nodo;
Me funciona bien en Linux y en Windows, pero con gcc en Mac me marca que error por redefinición de tipos (con g++ compila bien).

He intentado también con:

Código:
typedef struct nodo {
int informacion;
struct Nodo* izquierda;
struct Nodo* derecha;
} Nodo;
Y ahí me marca warnings cuando una función recibe por parámetro un tipo Nodo* y le paso el miembro "izquierda" o "derecha". Como es warning sí compila el programa y de hecho se ejecuta correctamente, pero no me agrada eso de los warnings, sobre todo cuando en Linux todo compila bien.

Alguien sabe algo sobre por qué en algunas máquinas me marca ese error y en otras sí me deja "redefinir" tipos?

Gracias y saludos

Última edición por scrolling; 26/11/2012 a las 20:50
  #2 (permalink)  
Antiguo 26/11/2012, 21:06
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: redefinición de un tipo estructura

HOla! que raro que te funcione bien en linux, cree algo parecido y me marca dos errores: uno es por redefinicion de tipos, y el otro es por tratar de definir algo que aun no esta declarado osea vos queres hacer typedef struct nodo Nodo; pero struct nodo recien esta declarado despues de esta linea..

Y en el segundo que hiciste tambien me marca un warning, y tambien se debe a la forma de usar el typedef, lo correcto seria:

Código C:
Ver original
  1. typedef struct nodo {
  2.   int informacion;
  3.   struct nodo* p;
  4.   struct nodo* n;
  5. } Nodo;

Saludos

Etiquetas: estructura, funcion, int, programa, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:05.