Libclang返回不正确的游标类型(stdlib和命名空间类型)

时间:2015-06-02 17:31:42

标签: clang clang++ llvm-clang libclang

我正在使用libclang来做一些C ++的基本反映。我正在为标题创建一个翻译单元,然后使用游标访问所有树元素,在某些情况下,我会回到qualtypes以获取必要的信息。问题是现在游标类型libclang返回不正确。对于下面的示例头文件:

#include <vector>
#include <string>

namespace SomeNamespace
{
    struct B
    {
        std::string m_string;
        std::vector<float> m_vector;
    };
}

我使用 clang_parseTranslationUnit2 使用以下输入解析它:

参数数量: &#34; -x&#34;,&#34; c ++&#34;

选项: CXTranslationUnit_DetailedPreprocessingRecord | CXTranslationUnit_SkipFunctionBodies | CXTranslationUnit_Incomplete;

现在,当访问struct B的字段时,我得到:

光标到m_vector的

CXType_Int ,而不是 CXtype_Unexposed

但是对于 std :: string 成员m_string,我得到 CXType_Unexposed ,这允许我访问该字段并提取必要的信息。当访问字符串的字段时,我正确地获得了&#34;命名空间&#34;然后&#34; typeref&#34;光标类型。

我完全不知道发生了什么,为什么lib clang无法理解std :: vector类型?

我在2015年6月1日获得了libclang版本的最新版本。

1 个答案:

答案 0 :(得分:-1)

尝试在编译标志中添加clang标头目录