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