摘要:
将空函数优化掉是一项很有意义的工作。比如,在程序中,常常要定义一个打印函数。如果在 release时,把这个函数使用条件编译定义为空函数。且此空函数被优化掉,那就可以极大地提高程序的性能。测试表明: 在gcc中,使用 -O可以优化掉内联的空函数。默认情况下,空函数不会被优化掉。即使使用 -O,也不会优化掉非内联的空函数。内联的空函数会被优化掉是很容易理解的。函数被内联后,没有了参数入栈出栈操作,自然也就无代码可生成了。但没有优化选项是,内联函数不会被优化,我却想不通。既然 声明为 inlinne,为什么函数没有被优化掉。那还要 inline何用?下面分别是c源文件, 未优化的汇编代码,优化后的 阅读全文