1
我正在遍歷模塊的函數列表,如下所示。 我正在尋找一種方法來確定一個Function *f
是一個聲明還是一個定義。 (通過轉儲功能似乎在列表中包含兩種類型。)找出函數類型在llvm中
for (Module::iterator f = M->begin(), fend = M->end(); f != fend; ++f) {
...
}
我正在遍歷模塊的函數列表,如下所示。 我正在尋找一種方法來確定一個Function *f
是一個聲明還是一個定義。 (通過轉儲功能似乎在列表中包含兩種類型。)找出函數類型在llvm中
for (Module::iterator f = M->begin(), fend = M->end(); f != fend; ++f) {
...
}
從Function
手冊:
如果
BasicBlock
列表是空的,這表明Function
實際上是一個功能聲明:函數的實際主體尚未鏈接。
,並在Important Public Members of the Function下一節中,你會發現你想要的功能:
布爾
isDeclaration
()返回函數是否已經身體定義。如果函數是「外部的」,它沒有主體,因此必須通過鏈接到在不同翻譯單元中定義的函數來解決。
它爲您做空虛檢查。