Вложенные функции отключены - почему я получаю это сообщение об ошибке?

71
10

Когда я случайно написал:


UIViewController tmp*=_currentViewController;

Вместо:


UIViewController *tmp=_currentViewController;

Я получаю вложенные функции - отключена ошибка. Можете ли вы это объяснить?

спросил(а) 2010-02-12T07:15:00+03:00 10 лет, 7 месяцев назад
1
Решение
73

Вы, наверное, уже поняли это, но это:


UIViewController tmp*=_currentViewController;

интерпретируется как:


UIViewController tmp *= _currentViewController;

который является присваиванием операцией умножения с LHS, которая является объявлением объекта (не указателем) с именем "tmp". Указатель объекта с именем "_currentViewController" - это другой операнд.


Таким образом, этот более простой оператор дает ту же ошибку:


int a *= b;

Обычно у вас есть что-то вроде:

a *= b;

который расширяется до:


a = a * b;

Однако LHS в этом случае не просто "a", а объявление "int a".


Мой GUESS заключается в том, что из-за этого странного значения LHS компилятор интерпретирует это расширение следующим образом:


int a { return a * b; }

который явно является вложенной функцией.

ответил(а) 2010-02-12T12:47:00+03:00 10 лет, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема