У меня есть что-то вроде:
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];
};
в моем файле project_typedef.h
.
В другом файле у меня есть что-то вроде:
void fileInput(DATA_PTR data)
{
//usual declarations and other things
data->miscData = 0; //Works!
data->units.x[0] = 5; //Doesn't work
//etc...
}
Однако это не работает, поскольку единицы измерения объявляются после данных в project_typedef.h
(если я переключу порядок работы). Ошибка, которую я получаю: «Слева от '.x' должен быть тип структуры / объединения». Я думал, что предварительное объявление решит эту проблему. Почему нет?