Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: _Grey en 01 de Enero de 1970, 01:00:00 AM

Título: extren VS struct
Publicado por: _Grey en 01 de Enero de 1970, 01:00:00 AM
                                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.                                
Título: extren VS struct
Publicado por: sés en 01 de Enero de 1970, 01:00:00 AM
                                Pos me da a mí que no.

Algo como:
extern int;

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

Los "#include" están para eso.                                
Título: extren VS struct
Publicado por: _Grey en 01 de Enero de 1970, 01:00:00 AM
                                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!                                
Título: extren VS struct
Publicado por: jpastor en 01 de Enero de 1970, 01:00:00 AM
                                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.                                
Título: extren VS struct
Publicado por: synchrnzr en 01 de Enero de 1970, 01:00:00 AM
                                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                                
Título: extren VS struct
Publicado por: jpastor en 01 de Enero de 1970, 01:00:00 AM
                                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.                                
Título: extren VS struct
Publicado por: nostromo en 01 de Enero de 1970, 01:00:00 AM
                                _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                                
Título: extren VS struct
Publicado por: synchrnzr en 01 de Enero de 1970, 01:00:00 AM
                                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                                
Título: extren VS struct
Publicado por: _Grey en 01 de Enero de 1970, 01:00:00 AM
                                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.                                
Título: extren VS struct
Publicado por: mallrat en 01 de Enero de 1970, 01:00:00 AM
                                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.

                               
Título: extren VS struct
Publicado por: sés en 01 de Enero de 1970, 01:00:00 AM
                                Pues vaya pelotas.