假设我们有以下代码:
inline int func_2 (int a, int b) {
return time() + a * b;
}
int main (void) {
int x = (int (*[])(int, int)){func_1, func_2, func_3}[1](6, 7);
}
可以以某种方式欺骗 gcc 以真正内联对 的间接调用func_*
吗?
-O2
用and编译代码后-O3
,我仍然可以call func_2
在汇编输出中发现一条指令。
我知道这个毛茸茸的表达式可以转换成一个庞大的switch
语句,每个案例都有内联调用,但我更喜欢前者,因为它紧凑。