Понимание запутанной грамматики typedef

Рассмотрим следующий фрагмент кода

typedef int type;
int main()
{
   type *type; // why is it allowed?
   type *k ;// which type?
}

Я получаю сообщение об ошибке 'k' не объявлен в этой области . Компилятор анализирует тип * k как умножение между типом * и k . Разве эта грамматика не сбивает с толку?

Почему type * type разрешен стандартом C ++? Потому что так говорит грамматика? Почему?

41
задан Prasoon Saurav 13 December 2011 в 12:31
поделиться