typedef структура, прежде чем она объявлена

Я не новичок, я очень знаком со следующей идиомой:

typedef struct Foo_ Foo;// I know typedef struct Foo Foo is fine, I'm just trying to make it clearer
struct Foo_
{
    int value;
    Foo *link;
};

Я просто внезапно запутался, потому что, насколько я понимаю, нельзя использовать имя (идентификатор) до его объявления. Но в декларацииtypedef struct Foo_ Foo, идентификаторFoo_ еще не существует! Почему компилятор разрешил это случиться? Кто-нибудь может пролить свет на это, объяснить мне, что является оправданием для такого рода синтаксиса?

Цитата из Википедии: Цельtypedef это назначить альтернативные имена для существующих типов.

---> 8 ---

Спасибо всем вам за очень полезную информацию.

Ответы на вопрос(7)

Ваш ответ на вопрос