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.
Pos me da a mí que no.
Algo como:
extern int;
...queda un poco raro, ¿no? :lengua:
Los "#include" están para eso.
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!
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.
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
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.
_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
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
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.
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.
Pues vaya pelotas.