Замена всех вызовов функций их определением в коде C/C++

Интересно, есть ли какая-нибудь теория / инструмент, доступный для замены части кода, содержащей вызовы функций, на код, где все вызовы функций были заменены их соответствующим кодом.

лайк

main()
{
   fun();
}

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

fun2()
{
   int j;
}

в

main()
{
   int i;
   int j;
}

Я знаю, что есть о чем позаботиться, например, имена локальных переменных, рекурсивные вызовы, вызовы внешних функций и т. Д. И т. Д..

Я также знаю, что это может быть совсем не полезно, но все же существует что-то подобное? даже в теории?

я должен назвать это авансом на процессорный блок:)

1 ответ

Компилятор обычно может сказать, когда это хорошая идея, и уже автоматически делает вставку, когда это необходимо. Вы также можете предложить встроенную функцию, используя inline Ключевое слово перед функцией (обратите внимание, что она по-прежнему фактически не вызывает ее, и компилятор может решить избежать встраивания). Как правило, это не очень хорошая идея, чтобы делать это вручную, так как современные компиляторы стремятся выяснить наилучшие возможные встраивания самостоятельно. В этой статье очень хорошо объясняются встроенные функции, я нашел это очень полезным

Изменить 1:

Есть несколько причин, по которым вы можете захотеть сделать то, о чем вы говорите. Если вы чувствуете, что ваш код разделен на множество различных функций, которые снижают его ясность и делают его слишком многословным, вы можете попробовать инструмент рефакторинга, такой как тот, который предоставляется плагином VAssist X Visual Studio. Хотя этот плагин на самом деле не выполняет то, что вы предлагаете (я не могу придумать инструмент, который это делает), он может с легкостью перемещать функции / методы, позволяя вам очистить код.

Другие вопросы по тегам