Инструменты для расширения или встраивания подфункций в C-код

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

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

Результат этого упражнения очень полезен, но это очень ручной и утомительный процесс. Поскольку я делаю прошивку, на некоторых микросхемах, которые поддерживают возможность трассировки, это можно сделать с помощью отладчика JTAG. Но эта настройка не всегда доступна.

Я знаю, что с макросами я могу использовать для этого препроцессор, но я не мог понять, как это сделать с подфункциями, если такой инструмент существует. Я попробовал поискать "расширение подфункции" и т. Д., Но пока не повезло. Пожалуйста, дайте мне знать, если вы знаете, что такой инструмент существует или уместно использовать термин (-ы) того, что я пытаюсь сделать, чтобы я мог лучше найти его в Интернете. Большое спасибо!

int myGlobal;

void increment(int input)
{
    input++;
}

void decrement(int input)
{
    input--;
}

int doSomething(int input, int op)
{
    if (op)
    {
        increment(input);
    }
    else
    {
        decrement(input);
    }
}

int main(void)
{
    int i, currMax;
    int myOp = 1;

    myGlobal = 0;
    currMax = 5;
    for (i = 0; i < currMax; i++)
    {
        doSomething(myGlobal, myOp);
    }

    currMax = 4;
    myOp = 0;
    for (i = 0; i < currMax; i++)
    {
        doSomething(myGlobal, myOp);
    }

}

СТАНОВИТСЯ

int main(void)
{
    int i, currMax;
    int myOp = 1;

    myGlobal = 0;
    currMax = 5;
    for (i = 0; i < currMax; i++)
    {
        // doSomething(myGlobal, myOp);
        if (myOp)
        {
            // increment(myGlobal);
            myGlobal++;
        }
        else
        {
            decrement(myGlobal);
            myGlobal--;
        }
    }

    currMax = 4;
    myOp = 0;
    for (i = 0; i < currMax; i++)
    {
        // doSomething(myGlobal, myOp);
        if (myOp)
        {
            // increment(myGlobal);
            myGlobal++;
        }
        else
        {
            // decrement(myGlobal);
            myGlobal--;
        }
    }

}

0 ответов

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