使用gcc内联C代码中的所有函数

我有很多没有递归的C程序。 我想让程序没有用户定义的function,但主要function。 GCC可以进行内联但是处于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; } 

但是,您必须手动将此属性附加到每个函数。

我仍然假设您的所有function都遵循必须内联的规则。 例如没有转到,递归等