typedef stuct с предварительным объявлением в 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];
};

в моем файле 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' должен быть тип структуры / объединения». Я думал, что предварительное объявление решит эту проблему. Почему нет?

6
задан user1007692 16 November 2011 в 18:32
поделиться