Вложенные функции отключены - почему я получаю это сообщение об ошибке? - PullRequest
2 голосов
/ 12 февраля 2010

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

UIViewController tmp*=_currentViewController;

Вместо:

UIViewController *tmp=_currentViewController;

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

1 Ответ

2 голосов
/ 12 февраля 2010

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

UIViewController tmp*=_currentViewController;

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

UIViewController tmp *= _currentViewController;

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

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

int a *= b;

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

a *= b;

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

a = a * b;

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

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

int a { return a * b; }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...