在我的一个检查器中,我使用FunctionDecl类来获取函数声明。现在我想获得我输入checkASTDecl方法的函数的名称。我们知道在checkASTDecl()中我们得到类FunctionDecl的指针。所以,任何人都可以帮助我获取我输入checkASTDecl的函数名称。
以下是我编写的示例代码:
namespace {
class FuncPrototypeChecker : public Checker<check::ASTDecl<FunctioeDecl> > {
mutable OwningPtr<BugType> TernaryOperatorBug;
public:
void checkASTDecl(const FunctionDecl *D,
AnalysisManager &mgr, BugReporter &BR) const;
};
}
void FuncPrototypeChecker::checkASTDecl(const FunctionDecl *D,
AnalysisManager &mgr,
BugReporter &BR) const {
/* Get the name of the function from FunctionDecl *D */
}
我想获取我输入方法FuncPrototypeChecker :: checkASTDecl()的函数的名称。请帮助我实现它的方式。 提前谢谢。
答案 0 :(得分:7)
事实上,clang有一个类来存储decls的名字(不只是FunctionDecl
),名为DeclarationNameInfo
(见clang api for DeclarationNameInfo)
您可以使用API调用获取DeclarationNameInfo
的{{1}}个实例:
FunctionDecl
并通过以下方式将名称作为字符串获取:
functionDecl->getNameInfo();
返回的结果为functionDecl->getNameInfo().getAsString();
。
clang api for FunctionDecl中提供了有关std::string
API的更多信息。