我尝试使用 libclang 解析 C++ 标头,但解析器仅解析类名 - 并将其类型显示为 VarDec1。当文件扩展名从 .h 更改为 .cpp 时,它就可以正常工作。经过几天的搜索找不到答案,有人可以帮我解决这个问题吗?
以下是parser.cpp:
#include <iostream>
#include <clang-c/Index.h> // This is libclang.
using namespace std;
ostream& operator<<(ostream& stream, const CXString& str)
{
stream << clang_getCString(str);
clang_disposeString(str);
return stream;
}
int main()
{
CXIndex index = clang_createIndex(0, 0);
CXTranslationUnit unit = clang_parseTranslationUnit(
index,
"tt.h", nullptr, 0,
nullptr, 0,
CXTranslationUnit_None);
if (unit == nullptr)
{
cerr << "Unable to parse translation unit. Quitting." << endl;
exit(-1);
}
CXCursor cursor = clang_getTranslationUnitCursor(unit);
clang_visitChildren(
cursor, …Run Code Online (Sandbox Code Playgroud)