通过函数指针使用的函数可以内联吗?

时间:2011-09-04 20:42:40

标签: c

#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 个答案:

答案 0 :(得分:6)

除非它们的值在编译时完全可判定,否则不能内联函数指针。你的案子不可判决。

大多数情况下,函数指针永远不会被内联,即使编译器可以看到函数指针中有哪个函数。