我有很多没有递归的 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 ;
}
目标:
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 ;
}
最佳答案
gcc提供了一个函数属性,叫做always_inline
.
用法:
int add(int arg1, int arg2)__attribute__((always_inline)); // prototype
int add(int arg1, int arg2){
return arg1+arg2;
}
但是,您必须手动将此属性附加到每个函数。
我仍然假设您的所有函数都遵循内联所必需的规则。例如没有转到,递归等。
关于c - 用gcc内联C代码中的所有函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970806/