我正在使用clang库来进行一些c ++ AST操作。我想得到一个IfStmt
条件的右括号的位置。我试过了:
auto condLocEnd = statement->getCond()->getLocEnd();
auto condLoc = Lexer::findLocationAfterToken(condLocEnd, tok::r_paren, sm, LangOptions(), false);
不幸的是,当条件包含宏时,condLoc
无效。例如:if(p == NULL)
。我无法弄清楚如何获得位置。怎么弄?
感谢cfe-dev邮件列表,我发现这个答案https://stackoverflow.com/a/24223347。我需要得到我的条件表达式的LocEnd()
的扩展位置。