1

再帰のない C プログラムがたくさんあります。ユーザー定義関数なしでメイン関数のみのプログラムを取得したい。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 ;
}
4

1 に答える 1

0

と呼ばれる gcc によって提供される関数属性がありますalways_inline

使用法:

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

ただし、この属性をすべての関数に手動でアタッチする必要があります。

私はまだ、すべての関数がインライン化に必要な規則に従っていると想定しています。たとえば、goto、再帰などはありません。

于 2012-12-20T11:15:16.863 に答える