Я не новичок, я очень хорошо знаком со следующей идиомой:
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 ---
Спасибо всем парням за столь полезную информацию.