7

呼び出し先関数がユーザー定義かどうかを識別する方法はありますか? 例えば:

void foo()
{
   printf("hello world again");
}
int main()
{
   printf("hello world\n");
   foo();
}

この場合、foo() はユーザー定義ですが、printf() はライブラリー関数です。

私が現在使用している方法は、すべてのモジュールを繰り返し処理し、そのサイズが 0 より大きいかどうかを確認することです。すなわち:

for(Module::iterator F = M.begin(); F != M.end(); ++F)
{
    Function &Func = *F;
    if(F->size()>0)
        errs() << "User Define";
}

しかし、その精度について確信が持てませんか?

4

1 に答える 1

7

メソッドを使用してisDeclaration、関数が定義されているか、モジュールで宣言されているかを確認できます。これにより、実装がモジュール内にある関数と、モジュールの外にあると予想される関数を区別できます。

于 2014-05-29T14:01:23.063 に答える