#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文件与内联相同或不相同。任何带有函数指针的代码都一样吗?
答案 0 :(得分:6)
除非它们的值在编译时完全可判定,否则不能内联函数指针。你的案子不可判决。
大多数情况下,函数指针永远不会被内联,即使编译器可以看到函数指针中有哪个函数。