определение ссылочных структур в C - PullRequest
0 голосов
/ 02 ноября 2011

Если я напишу что-то вроде следующего:

typedef struct {
    int a;
    PTR1 bpointer;
} *PTR2;

typedef struct {
    int b;
    PTR2 cpointer;
} *PTR1;

Я определяю PTR1 после PTR2, но, если использовать его в первую очередь, это может быть во время компиляции или во время выполнения. Итак, как я могу избежать любой такой ошибки и использовать две ссылочные структуры? Я думаю, что то же самое мы делаем в двух взаимозависимых классах. Так возможно ли, что он не покажет какой-либо ошибки, потому что мы просто определяем их в данный момент и при вызове они оба уже определены? Немного запутать.

Я очень ценю ваше время, чтобы увидеть мой вопрос и ваши усилия.

спасибо

1 Ответ

3 голосов
/ 02 ноября 2011

Первый шаг - избавиться от typedefs и использовать теги struct. Затем вы можете заранее объявить теги struct и сделать typedefs отдельно, если вы все еще хотите их использовать. Обратите внимание, что считается очень плохим стилем использовать typedef для определения типов указателя на структуру, особенно если нет способа обратиться к указанному типу, когда вы закончите.

struct struct1;
struct struct2;

struct struct2 {
    int a;
    struct struct1 *bpointer;
};

struct struct1 {
    int b;
    struct struct2 *cpointer;
};
...