我使用libclang解析源文件,并获得对某种类型的引用CXType
,说它是“const std::__1::basic_string<char>
”(由clang_getTypeSpelling
报告)。如何获得对相同类型但没有const限定符的引用?
最佳答案
通过访问该类型的游标的子代,我能够做到这一点。例如,给定一个CXCursor'cursor',
CXType type = clang_getCursorType(cursor);
if (clang_isConstQualifiedType(type))
{
auto RemoveConstFromType = [](CXCursor c, CXCursor, CXClientData d)
{
*(CXType*)d = clang_getCursorType(c);
return (clang_isConstQualifiedType(*(CXType*)d) ? CXChildVisit_Recurse : CXChildVisit_Break);
};
clang_visitChildren(cursor, RemoveConstFromType, &type);
}
希望对您有所帮助。 =)