В следующем коде я объявил переменную-член структуры с тем же именем, что и имя структуры.
struct st
{
int st;
};
int main()
{
struct st t;
t.st = 7;
return 0;
}
Интересно, он отлично работает на компиляторе GCC и не выдает конфликтной ошибки.
So,
- Как компилятор узнает имя структуры и имя переменной?
- Какой механизм внутреннего использования компилятора?
main()
? - person joop   schedule 10.10.2017struct
указывает компилятору размечать следующиеst
как структуру со значениемst
. Точно так же элементint st
объявляется как переменнаяint
с именемst
. Их использование ортогонально, поэтому компилятор не может запутаться во время лексического анализа. - person Mateen Ulhaq   schedule 10.10.2017st
мог бы быть двусмысленным. В зависимости от контекста это может быть либо имя структуры, либо имя поля, но не то и другое одновременно. - person axiac   schedule 10.10.2017