Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





extren VS struct

Iniciado por _Grey, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

_Grey

                                Casi me da vergüenza preguntar esto a mi edad, pero bueno.....

Todos sabemos usar el "extern" supongo , no? pones extern void funcion() y sabe que te refieres a una funcion que esta "en otro sitio" (libreria fichero .obj o asi), incluso se puede usar para las variables, ahora bien, si lo que quieres es traerte una estructura(o sea, struct) se puede hacer? o estas obligado a poner el cuerpo de la estructura TAMBIEN ahi? es dicer un extern struct persona, no se puee hacer, se puede hacer algo similar sin añadir el #include donde esta la estructura?

Gracias y saludos.                                

sés

                                Pos me da a mí que no.

Algo como:
extern int;

...queda un poco raro, ¿no? :lengua:

Los "#include" están para eso.                                
Soy indeciso... ¿o no?

_Grey

                                Para eso estan, pero un fichero de cabezera dentro de otro tambien de cabezera y luego que un fichero de codigo tengo los dos y empezar con los #ifdef y demas, me parecia algo sucio, y que tenia que haber otra forma mas "limpia" de hacer lo, pero parece que no....

gracias de todas formas!                                

jpastor

                                En C++ si se puede, en C no lo se.

Yo lo hago asi y me funciona:

--- clasedos.h ---

class ClaseUNO;

class ClaseDOS
{
   ClaseUNO  variable;
};

--- claseuno.h ---

class ClaseUNO
{
   int entero;
};

---

Como si pusieras prototipos de clases.

Logicamente si el archivo con el codigo incluye antes la cabecera donde esta ClaseUNO no haria falta hacerlo, pero a veces es un lio cuando tienes muchas cabeceras que se usan unas a otras.                                

synchrnzr

                                Tan raro no es, el interface de mi motor para GameBoy Advance utiliza variables externas con lo que tengo varios "extern int" declarados en las cabeceras y funciona sin problemas ^_^'

De todas formas juraría que en Visual también se puede hacer sin problemas... (es más, yo lo hice en la práctica de Gráficos II)

Sync                                

jpastor

                                synchrnzr,

lo que quiere _grey no son variables externas sino tipos externos.

extern int variable; // no es raro
extern int; // un poco mas raro si que es.                                

nostromo

                                _Grey,

en respuesta a tu pregunta: un struct idealmente va en un .h para que lo puedas incluir. No hay manera de hacerlo de la forma que sugieres. Ten en cuenta que eso seria como intentar llamar a una funcion: funcion(pepe,velocidad,aceleracion); que has declarado como extern funcion; el compilador no sabe que parametros tiene la funcion si no la declaras antes... lo mismo para la struct


Además si lo haces asi(en un .h) solo escribiras la struct una vez.... ¿que secretos guardaras en esa struct que no quieres enseñarla? XDDD :ojo:

Un saludo                                

synchrnzr

                                jpastor: coño, es verdad, no lo había leido bien ^_^'

Entonces na, a declararlo en el .h y cuidado con las inclusiones múltiples... :ojo:

Sync                                

_Grey

                                Contestando jPastor....

Pues si eso mismo funciona en C, osea lo de predefiner la estructura con un simple "struct lo_que_sea;"..... y pensar que me dio por probarlo poniendole extern por todos sitios :lengua:, pues nada gracias y solucionado.                                

mallrat

                                puedes declarar la estructura como:

struct pelota;

pero solo podrás tener punteros a pelotas, no podrás tener pelotas dentro de la otra estructura.

                               

sés

                                Pues vaya pelotas.                                
Soy indeciso... ¿o no?






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.