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

时间:2012-12-20 11:07:12

标签: c gcc inline

我有很多没有递归的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 ;
}

1 个答案:

答案 0 :(得分:0)

gcc提供了一个名为always_inline的函数属性。

用法:

int add(int arg1, int arg2)__attribute__((always_inline)); // prototype
int add(int arg1, int arg2){
    return arg1+arg2;
}

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

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