我有很多没有递归的C程序。 我想让程序没有用户定义的功能,但主要功能。 GCC可以执行inline但是处于IR级别,因此我无法获得C代码。
来源:
int calc(int a , int b)
{
a=a+b-2;
return a ;
}
int main()
{
int x=4,y=7;
x=calc(x,y);
return 0 ;
}
TARGET:
int main()
{
int x=4,y=7;
int calc_A=x,calc_B=y;
calc_A=calc_A+calc_B-2;
x=calc_A;
return 0 ;
}
答案 0 :(得分:0)
gcc提供了一个名为always_inline
的函数属性。
用法:
int add(int arg1, int arg2)__attribute__((always_inline)); // prototype
int add(int arg1, int arg2){
return arg1+arg2;
}
但是,您必须手动将此属性附加到每个函数。
我仍然假设所有功能都遵循必须内联的规则。例如没有转到,递归等。