我想我对编译器有严重的不信任。如果内联函数内的分支具有恒定结果,它们是否会被优化掉?
对于示例函数:
#define MODE_FROM_X_TO_Y 0
#define MODE_FROM_Y_TO_X 1
inline void swapValues(int & x, int & y, int mode) {
switch(mode) {
case MODE_FROM_X_TO_Y:
y = x;
break;
case MODE_FROM_Y_TO_X:
x = y;
break;
}
}
会:
swapValues(n,m,MODE_FROM_X_TO_Y);
优化为:
n = m;
最佳答案
首先,它甚至不会编译(直到您添加返回类型)。
其次,swap
是一个非常糟糕的选择名称(因为它不执行 swap
,并且与 std::swap
冲突> 姓名)。
第三,前往 http://gcc.godbolt.org/ :
关于c++ - 内联函数中的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31630675/