3

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

喜欢

main()
{
   fun();
}

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

fun2()
{
   int j;
}

进入

main()
{
   int i;
   int j;
}

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

我也知道它可能根本没有用,但仍然存在这样的东西吗?即使在理论上?

我应该称它为提前每个处理器单元吗:)

4

1 回答 1

10

编译器通常可以判断什么时候这样做是个好主意,并且已经在需要时自动进行内联。您还可以建议在函数inline之前使用关键字内联函数(请注意,它实际上仍然没有强制执行,编译器可能会决定避免内联)。手动执行此操作通常不是一个好主意,因为现代编译器倾向于自己找出最好的内联。这篇文章很好地解释了内联函数,我发现它很有帮助

编辑1:

有几个原因可能会导致您想要进行您所说的内联。如果您觉得您的代码被划分为许多不同的功能会降低其清晰度并使其过于冗长,您可以尝试使用重构工具,例如VAssist X Visual Studio 插件提供的工具。虽然这个插件并没有真正按照你的建议去做(我想不出有什么工具能做到),但它可以帮助你轻松地移动函数/方法,让你清理你的代码。

于 2012-06-26T16:02:56.840 回答