6
#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文件是相同或不相同。它是否与任何带有函数指针的代码相同?通过函数指针使用的函数可以内联吗?
请注意,包括gcc在内的大多数编译器在决定是否插入内容时并不真正关心“内联”。它肯定可以忽略它,如果'inline'的存在对决定这个启发式的影响很大,我会感到惊讶。 – delnan