Здесь на ум приходят две модификации. Прежде всего, оба цикла полагаются на один и тот же счетчик, и счетчик не зависит от элементов в теле l oop ... Таким образом, логически вы должны хотя бы сделать это:
typedef struct
{
int field_A;
int field2_A;
} A;
typedef struct
{
int field_B;
int field2_B;
} B;
void function_need_refactor(A *a, B *b)
{
for(i = 0; i < SIZE; i++)
{
do_something(a->field_A);
do_something(b->field2_B);
}
}
Но вы также можете реорганизовать do_something()
для работы с обоими:
typedef struct
{
int field_A;
int field2_A;
} A;
typedef struct
{
int field_B;
int field2_B;
} B;
void function_need_refactor(A *a, B *b)
{
for(i = 0; i < SIZE; i++)
{
do_something(a->field_A, b->field2_B);
}
}
Таким образом, вы используете только одну l oop сумму, и функция обрабатывает оба поля на каждая л oop итерация.