【发布时间】:2012-02-06 23:40:39
【问题描述】:
我看到了一些类似这样的代码
int *func2(int *var) {
//Do some actual work
return var;
}
int *func1(int *var) {
return func2(var);
}
int main() {
int var;
var = func1(&var);
return 0;
}
这对我来说似乎是一种难以置信的浪费,但我认为中间函数以前可能有两个可以调用的函数,或者将来有一些扩展计划。我只是想知道像 gcc 这样的编译器是否可以检测到这种事情并消除实际程序中的无用函数,或者这种事情是否真的在运行时浪费了 CPU 周期?
【问题讨论】:
-
您是专门询问 gcc 还是理论上的问题 - 编译器可以做到吗?
-
两者都是,我在 Mac 和几台 Linux 机器上使用 gcc。但总的来说我很好奇,因为我真的很新,并且想知道是否只是为了保持低缩进级别而制作大量函数是个好主意。
标签: c compiler-construction compiler-optimization