Замена всех вызовов функций их определением в коде C/C++
Интересно, есть ли какая-нибудь теория / инструмент, доступный для замены части кода, содержащей вызовы функций, на код, где все вызовы функций были заменены их соответствующим кодом.
лайк
main()
{
fun();
}
fun()
{
int i;
fun2();
}
fun2()
{
int j;
}
в
main()
{
int i;
int j;
}
Я знаю, что есть о чем позаботиться, например, имена локальных переменных, рекурсивные вызовы, вызовы внешних функций и т. Д. И т. Д..
Я также знаю, что это может быть совсем не полезно, но все же существует что-то подобное? даже в теории?
я должен назвать это авансом на процессорный блок:)
1 ответ
Компилятор обычно может сказать, когда это хорошая идея, и уже автоматически делает вставку, когда это необходимо. Вы также можете предложить встроенную функцию, используя inline
Ключевое слово перед функцией (обратите внимание, что она по-прежнему фактически не вызывает ее, и компилятор может решить избежать встраивания). Как правило, это не очень хорошая идея, чтобы делать это вручную, так как современные компиляторы стремятся выяснить наилучшие возможные встраивания самостоятельно. В этой статье очень хорошо объясняются встроенные функции, я нашел это очень полезным
Изменить 1:
Есть несколько причин, по которым вы можете захотеть сделать то, о чем вы говорите. Если вы чувствуете, что ваш код разделен на множество различных функций, которые снижают его ясность и делают его слишком многословным, вы можете попробовать инструмент рефакторинга, такой как тот, который предоставляется плагином VAssist X Visual Studio. Хотя этот плагин на самом деле не выполняет то, что вы предлагаете (я не могу придумать инструмент, который это делает), он может с легкостью перемещать функции / методы, позволяя вам очистить код.