用C / C ++代码中的定义替换所有函数调用

时间:2012-06-26 15:59:49

标签: c++ c compiler-construction theory compiler-theory

我想知道是否有一些理论/工具可用于将包含函数调用的代码替换为所有函数调用已被其各自代码替换的代码。

main()
{
   fun();
}

fun()
{
   int i;
   fun2();
}

fun2()
{
   int j;
}

进入

main()
{
   int i;
   int j;
}

我知道有很多需要注意的事情,比如局部变量名,递归调用,外部函数调用等等。..

我也知道它可能根本没有用,但仍然存在这样的事情吗?甚至在理论上?

我应该将其称为每处理器单元前进:)

1 个答案:

答案 0 :(得分:10)

编译器通常可以判断何时执行此操作是个好主意,并且已经自动执行inlining whenever needed。您还可以建议在函数之前使用inline关键字来内联函数(注意它实际上并没有强制它,并且编译器可能决定避免内联)。它通常不是那么好想要手动执行此操作,因为现代编译器倾向于自己找出最好的内联。 This article explains inline functions really well, I found it very helpful

编辑1:

有几个原因可以解释为什么人们可能想要这样做。如果您认为您的代码被划分为许多不同的功能,从而降低其清晰度并使其过于冗长,您可以尝试使用重构工具,例如VAssist X Visual Studio plugin提供的工具。虽然这个插件并没有真正按照你的建议(我想不出一个工具),它可以帮助你轻松地移动函数/方法,让你清理代码。