我一直在使用出色的 C 接口 libclang ( http://clang.llvm.org/doxygen/group__CINDEX.html ) 编写 C++ AST 解析器。不幸的是,C++ 11 范围内的枚举和老式枚举之间似乎没有歧义:两者都具有 CXCursor_EnumDecl 的游标类型和 CXType_Enum 的类型,即相同。
我曾尝试拜访孩子们,看看他们的父母类型是否不同 - 遗憾的是没有。我尝试询问基础类型,我得到了两者的整数。我检查了 Enum 之后声明的所有项目,看看是否可能出现老式 Enum 的 bind 或 typedef,同样没有明显区别。
我开始认为我一定是错过了什么。我是否必须使用代码完成 API 来确定它是哪种枚举?