Вложенные функции отключены - почему я получаю это сообщение об ошибке?
74
11
Когда я случайно написал:
UIViewController tmp*=_currentViewController;
Вместо:
UIViewController *tmp=_currentViewController;
Я получаю вложенные функции - отключена ошибка. Можете ли вы это объяснить?
спросил(а)
2010-02-12T07:15:00+03:00
10 лет, 11 месяцев назад
добавить комментарий
пожаловаться
Решение
74
Вы, наверное, уже поняли это, но это:
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 лет, 11 месяцев назад
добавить комментарий
пожаловаться
Ваш ответ
- Вопросы
- Objective-c
- Вложенные функции отключены - почему я получаю это сообщение об ошибке?