如何获得Clang中条件的右括号的位置?

时间:2018-02-28 08:37:25

标签: c++ clang

我使用clang库进行一些c ++ AST操作。我想获得IfStmt条件的右括号的位置。 我试过了:

auto condLocEnd = statement->getCond()->getLocEnd();
auto condLoc = Lexer::findLocationAfterToken(condLocEnd, tok::r_paren, sm, LangOptions(), false);

不幸的是,当条件包含宏时,condLoc无效。 例如:if(p == NULL)。我无法弄清楚如何获得该位置。如何获得它?

1 个答案:

答案 0 :(得分:1)

感谢cfe-dev邮件列表,我发现这个答案是https://stackoverflow.com/a/24223347。我需要获取我的条件表达式LocEnd()的扩展位置。