2016-06-20 43 views
1

我已經實現了一個使用Clang的AST訪問器。 有了這段代碼,我可以檢索函數調用名稱correclty。獲取AST訪客叮噹的函數聲明類型

virtual bool VisitFunctionDecl(FunctionDecl *func) 

{ 

    numFunctions++; 

    string funcName = func->getNameInfo().getName().getAsString(); 

string funcType = func->getType().getAsString(); 

APIs << funcType << endl; 

    APIs << "\n" << funcName <<": "; 

    return true; 

} 

我想提取函數聲明類型。例如 int my_func(int a,int b){..} 我想提取int類型。它實現的方式將返回除函數名外的整個函數聲明。上面這段代碼在funcType中將返回int(int a,int b)

我該如何解決這個問題? 謝謝!

回答

1

這聽起來像你試圖找到返回類型,而不是函數的聲明類型。爲此,請使用getReturnType()

+0

想使用getReturnType(),雖然在文檔中我可以看到,這個方法在類FunctionDecl類的編譯器給了我這個 存在錯誤:「類鏗鏘:: FunctionDecl」沒有名爲成員「getReturnType」 –

+0

你是對的!雖然自從使用llvm/clang 3.4以來,getReturnType()不存在,但存在getResultType()。它的功能相同。 –