ho qualcosa di simile:typedef stuct con dichiarazione anticipata in 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];
};
nel mio file project_typedef.h
.
In un altro file, ho qualcosa di simile:
void fileInput(DATA_PTR data)
{
//usual declarations and other things
data->miscData = 0; //Works!
data->units.x[0] = 5; //Doesn't work
//etc...
}
Tuttavia, questo non funziona in quanto unità è dichiarata dopo che i dati in project_typedef.h
(se posso passare l'ordine funziona). L'errore che ottengo è "left of" .x "deve avere struct/union type". Pensavo che la dichiarazione anticipata avrebbe risolto il problema. Perchè no?
Prima di tutto che == sembra strano ... – Tudor
@Tudor, un errore di battitura, ma non è così è nel mio codice. È stato modificato ora. – user1007692
Voglio solo dire che odio quando vedo i tipi di puntatore usati come normali. DATA_PTR non semplifica la scrittura del codice in alcun modo poiché è ancora puntatore e devi ancora usare l'operatore ->. –