tengo algo como:typedef stuct con declaración adelantada en C
typedef struct Data DATA, *DATA_PTR;
typedef struct Units UNITS, *UNITS_PTR;
struct Data
{
double miscData;
UNITS units;
};
struct Units
{
double x[2];
double y[2];
double z[2];
};
en mi archivo project_typedef.h
.
En otro archivo, que tienen algo así como:
void fileInput(DATA_PTR data)
{
//usual declarations and other things
data->miscData = 0; //Works!
data->units.x[0] = 5; //Doesn't work
//etc...
}
Sin embargo, esto no funciona ya que las unidades se declara después de datos en project_typedef.h
(si cambio el orden en que trabaja). El error que recibo es "left of '.x' debe tener struct/union type". Pensé que la declaración directa solucionaría este problema. Por qué no?
En primer lugar == parece extraño ... – Tudor
@Tudor, un error tipográfico, pero no es así está en mi código. Está editado ahora. – user1007692
Solo quiero decir que odio cuando veo tipos de punteros usados como tipo normal. DATA_PTR no simplifica la escritura de código de ninguna manera, ya que todavía es puntero y aún tiene que usar -> operador. –