Я внедрил посетителя AST с помощью Clang. С помощью этого фрагмента кода я могу получить имя вызова функции.Получить тип объявления функции с помощью AST посетителя clang
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)
Как это исправить? Спасибо!
Am пытается использовать getReturnType(), и, хотя в документации, которую я могу видеть, что этот метод существует в классе класс FunctionDecl компилятор дает мне эту ошибку: «Класс лязг :: FunctionDecl» не имеет ни одного члена с именем «getReturnType» –
Вы были правы! Хотя, поскольку я использую llvm/clang 3.4, getReturnType() не существует, но getResultType() существует. Его же функция. –