указатель на назначение функции - PullRequest
5 голосов
/ 30 августа 2011

Почему присвоение без '&' компилируется в следующем коде? Я скомпилировал код с GCC 3.4.6. Правильно ли назначать без &, или это «особенность» GCC?

void func() {
}

int main() {
  typedef void (*F)();

  F f;
  f = &func; // the way of assigning pointer to function.
  f = func;  // this is also working.

  (*f)();

  return 0;
}

1 Ответ

13 голосов
/ 30 августа 2011

Это совершенно нормально.Оба утверждения полностью эквивалентны.Функция lvalue преобразуется в указатель для функции посредством стандартного преобразования.§4.3 / 1:

Значение l типа функции T может быть преобразовано в значение типа указатель на T. В результате получается указатель на функцию.

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