7

无论如何我可以确定被调用函数是否是用户定义的?例如:

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

在这种情况下 foo() 是用户定义,而 printf() 是库函数。

我目前使用的方法是遍历所有模块并检查其大小是否大于 0。IE:

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 回答