Могут ли функции, используемые через указатели функций, быть встроенными? - PullRequest
6 голосов
/ 05 сентября 2011
#include <stdlib.h>

inline int f0(int a) {
  return a*a;
}

inline int f1(int a) {
  return a*a*a;
}

int main() {
  int (*f)(int);
  f = rand()%2 ? f0 : f1;
  return f(rand());
}

Таким образом, с помощью gcc генерируется asm-файл одинаковым со встроенным или без него. То же самое с любым кодом с указателями на функции?

1 Ответ

6 голосов
/ 05 сентября 2011

Указатели на функции не могут быть встроены, если их значение не будет полностью разрешено во время компиляции. Ваш случай не подлежит рассмотрению.

Большинство указателей на функции времени никогда не будут встроены, даже если компилятор увидит, какая функция находится в указателе функции.

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