无论如何,我可以确定被调用函数是否是用户定义? 例如:
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";
}
但我不确定它的准确性?
答案 0 :(得分:7)
您可以使用isDeclaration
方法检查函数是已定义还是仅在模块中声明。这将使您可以区分实现在模块中的函数和预期在其外部找到的函数。