Рассмотрим следующий фрагмент кода
typedef int type;
int main()
{
type *type; // why is it allowed?
type *k ;// which type?
}
Я получаю сообщение об ошибке 'k' не объявлен в этой области
. Компилятор анализирует тип * k
как умножение между типом *
и k
. Разве эта грамматика не сбивает с толку?
Почему type * type
разрешен стандартом C ++? Потому что так говорит грамматика? Почему?