получение информации о параметре из класса FunctionDecl в clang

Как получить информацию о параметрах в виде строки из класса FunctionDecl в clang. Я пытаюсь, но путаюсь со многими наследствами. Также их компилятор говорит, что 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;
}

}

Ошибки: —

У класса clang :: FunctionDecl нет члена с именем getReturnType

4

Решение

В зависимости от того, нужно ли вам квалифицированное или неквалифицированное имя, вы можете указать тип возвращаемого значения и имена параметров следующим образом.

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

Проверьте getAsString () метод предоставляется.


Изменить: после ваших комментариев я понял, что у вас нет последней версии исходного кода Clang. Пожалуйста, проверьте это перед повторной попыткой. Удачи!

3

Другие решения

попробуй это,

getResultType()

скорее, чем

getReturnType()

У llvm 3.4 нет участников getReturnType() но идентичная функция, имя которой getResultType() существует.

2

Чтобы получить весь список параметров динамически, приведенный ниже код поможет.

string retName = func->getReturnType().getAsString();
for(int i=0; i<func->getNumParams(); i++)
{
std::cout << " " << func->parameters()[i]->getQualifiedNameAsString();
}
...
0
По вопросам рекламы [email protected]