【发布时间】:2013-03-09 18:24:28
【问题描述】:
我已经写了这段代码:
inline int a_plus_b_power2(int a, int b) {
return (a + b) * (a + b);
}
int main() {
for(int a = 0; a < 9999999999999; ++a)
for(int b = 0; b < 999999999999; ++b)
a_plus_b_power2(a, b);
return 0;
}
但是为什么这个程序的二进制文件和这个程序没有区别:
inline int a_plus_b_power2(int a, int b) {
return (a + b) * (a + b);
}
int main() {
for(int a = 0; a < 9; ++a)
for(int b = 0; b < 9; ++b)
a_plus_b_power2(a, b);
return 0;
}
【问题讨论】:
-
我认为 OP 期望编译器生成 9999999999 * 99999999 (等)对内联函数的单独显式调用。
-
999999999999 太大,无法放入 int。
-
@Inisheer 我希望编译器生成精确的 9999999999 * 99999999 单独副本,而不是调用。
-
另外,由于您的结果被忽略,这两个都与
int main() {return 0;}完全相同,这就解释了为什么它们的大小相同。
标签: c++ inline-functions