我使用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);
}

希望对您有所帮助。 =)

10-04 17:20