【发布时间】:2015-07-19 13:21:01
【问题描述】:
这是我一直认为是真实的,但从未得到任何验证。考虑一个非常简单的函数:
int subtractFive(int num) {
return num -5;
}
如果对该函数的调用使用编译时间常数,例如
getElement(5);
启用了优化的编译器很可能会内联它。然而,我不清楚的是 num - 5 是否将在运行时或编译时进行评估。表达式简化会以这种方式通过内联函数递归扩展吗?还是不超越功能?
【问题讨论】:
-
我希望一个像样的编译器将第二个表达式替换为 0,是的。但是除了查看程序集之外没有其他方法可以确定
-
如果是简单的代码,我喜欢使用this page,因为它可以方便地过滤掉
gcc -S产生的大部分噪音。 -
我不是专家,但我认为这可能有助于实现
constexpr的功能。 -
如果它是内联的,它就不再是一个不同的函数了。
-
@Olaf 如果有人不想获得 C++ 答案,他们不应该标记 C++ 问题。
标签: c++ c gcc optimization compiler-optimization