我尝试使用clang的ParseAST()和ASTConsumer来提取源文件中的所有c函数声明,然后将这些函数声明输出到另一个文件中。
除非存在某种未知类型名称,否则一切都很好。例如,
my_type foo(int x) { /*...*/ } // "my_type" is just a type identifier whose definition is missed in this translation unit.
当我在RecursiveASTVisitor :: VisitFunctionDecl()中使用getReturnType()时,它将返回“int”类型。所以我的程序将输出
int foo(int x);
而不是
my_type foo(int x);
我很好奇为什么"my_type"
将被解析为int
类型。
解析此源代码时,clang将报告错误说明错误:
未知类型名称'my_type'
。所以我认为clang知道它是一种类型(未知类型也是我认为的类型)。