об удалении / замене структуры - PullRequest
0 голосов
/ 06 июня 2019

У меня есть код языка C, который использует struct, включая функции и вызовы функций, которые инициализируют структуру.Теперь я хочу отказаться от использования структур.Из-за проблем с выполнением кода, большого количества кода и сложных структур я не могу изменить их вручную.Функции и структуры, поэтому я должен найти автоматизированный метод.Следующий код является простым примером.Есть ли лучший способ или идея?

#include<stdio.h>

struct A
{
  int a;
  int b;
};

struct A add(int x, int y)
{
  struct A t;
  t.a = x + y;
  return t;
}

int main()
{
  struct A t = add(3, 4);
  printf("t.a = %ld\n", t.a);
  return 0;
}

Кому:

#include<stdio.h>

int main()
{
  int A_a = 3;
  int A_b = 4;
  int A_a_b = A_a + A_b;
  printf("%d\n", A_a_b);
  return 0;
}

1 Ответ

0 голосов
/ 09 июня 2019

Вы пробовали antlr?

Полагаю, вы хотите изменить код ниже.

включают

/*
struct A
{
  int a;
  int b;
};
*/

/*
struct A add(int x, int y)
{
  struct A t;
  t.a = x + y;
  return t;
}
*/

int main()
{
/*
  struct A t = add(3, 4);
*/  
  int A0_t_a; //t.a
  int A0_t_b; //t.b
  {
    //add(3, 4)
    int x = 3;
    int y = 4;

    //struct A t;
    int A1_t_a;
    int A1_t_b;

    //t.a = x + y
    A1_t_a = x + y;

    //return t
    A0_t_a = A1_t_a;
    A0_t_b = A1_t_b;
  }

/*
  printf("t.a = %ld\n", t.a);
*/
  printf("t.a = %ld\n", A0_t_a);  
  return 0;
}
...