我正在迭代Module的功能列表,如下所示。
我正在寻找一种方法来查明Function *f
是否是声明或定义。 (通过转储函数,似乎列表包含两种类型。)
for (Module::iterator f = M->begin(), fend = M->end(); f != fend; ++f) {
...
}
答案 0 :(得分:2)
来自Function
手册:
如果
BasicBlock
列表为空,则表示Function
实际上是一个函数声明:函数的实际主体尚未链接。
在Important Public Members of the Function的下一部分中,您将找到所需的功能:
bool
isDeclaration
()返回函数是否定义了主体。如果函数是“外部”,则它没有正文,因此必须通过链接到不同翻译单元中定义的函数来解析。
为你做空虚检查。