2016-06-14 30 views

回答

2

TraverseDecl指示前端庫的ASTConsumer從AST遞歸訪問聲明。然後調用VisitDecl,您可以從中提取相關信息。

按照有關詳細信息,這兩個環節,一個簡單的檢查例如:

http://clang.llvm.org/docs/RAVFrontendAction.html

How to traverse clang AST manually ?

+0

是否有到的ASTVisitor內使用TraverseDecl或VisitDecl雖然任何區別。在該示例中,TraverseDecl在ASTVisitor中的ASTConsumer和VisitDecl中使用。但是,另一個stackoverflow鏈接在ASTVisitor本身中具有TraverseDecl。 –

+0

[RecursiveASTVisiter](http://clang.llvm.org/doxygen/classclang_1_1RecursiveASTVisitor.html) 如果您查看鏈接中的詳細描述:您可以看到,traverseDecl將比visitDecl更高。因此,如果它取決於我,我會遵循[Clang Plugin](http://clang.llvm.org/docs/RAVFrontendAction.html)示例,因爲它維護該層次結構並且更容易理解。 –

+0

那意味着在ASTVisitor中的ASTConsumer和Visits內使用Traverse? MHMM。 –