5

clang の FunctionDecl クラスからパラメータ情報を文字列として取得する方法。私はしようとしていますが、非常に多くの継承に混乱しています。また、コンパイラは getReturnType() は FunctionDecl のメンバーではないと言っていますが、doxygen のドキュメントではそうではありません。助けてください。 http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html

using namespace std;
using namespace clang;
using namespace clang::driver;
using namespace clang::tooling;
using namespace llvm;

.......
class ExampleVisitor : public RecursiveASTVisitor<ExampleVisitor> 
{
    ......
    virtual bool VisitFunctionDecl(FunctionDecl *func) 
    {
            numFunctions++;
            string funcName = func->getNameInfo().getName().getAsString();
            string retName = func->getReturnType().getAsString();
            ...
            return true;
    }

}

エラー:-

「class clang::FunctionDecl」には「getReturnType」という名前のメンバーがありません</p>

4

4 に答える 4

3

修飾名または非修飾名が必要かどうかに応じて、次のように戻り値の型とパラメーター名を文字列化できます。

std::string retType = F->getReturnType().getAsString();
std::string arg0;
if(F->getNumParams() > 0)
  arg0 = F->parameters()[0]->getQualifiedNameAsString();

提供されているgetAsString()メソッドを確認してください。


編集: あなたのコメントの後、あなたが最新の Clang ソース コードを持っていないことがわかりました。再試行する前に確認してください。幸運を!

于 2014-06-23T10:46:11.190 に答える
2

これを試して、

getResultType() 

それよりも

getReturnType()

llvm 3.4 にはメンバーはありませんgetReturnType()が、名前がgetResultType()存在する同一の関数が存在します。

于 2015-10-01T17:54:22.177 に答える