libclangを使用してプリミティブリテラルの値を取得するにはどうすればよいですか?
たとえば、カーソルの種類がCXCursor_IntegerLiteralのCXCursorがある場合、リテラル値を抽出するにはどうすればよいですか。
アップデート:
libclangを使用すると非常に多くの問題が発生しました。私はそれを完全に避け、代わりにclangが提供するC++インターフェースを使用することを強くお勧めします。C ++インターフェースは非常に使いやすく、十分に文書化されています:http: //clang.llvm.org/doxygen/annotated.html
libclangの唯一の目的は、次のコードのようにASTUnitオブジェクトを生成することです(それ以外の場合は簡単ではありません)。
ASTUnit * astUnit;
{
index = clang_createIndex(0, 0);
tu = clang_parseTranslationUnit(
index, 0,
clangArgs, nClangArgs,
0, 0, CXTranslationUnit_None
);
astUnit = static_cast<ASTUnit *>(tu->TUData);
}
ここで、libclangは安定しているが、C++インターフェースは安定していないと言うかもしれません。libclangを使用してASTを理解し、それを使用してクラッジを作成するために費やす時間は、とにかく多くの時間を浪費するため、これはほとんど問題になりません。バージョンのアップグレード後にコンパイルされないコードを修正するのに数時間を費やしたいと思います(必要な場合でも)。