2016-06-20 9 views
1

Clang을 사용하여 AST 방문자를 구현했습니다. 이 코드를 사용하여 correclty라는 함수 호출 이름을 검색 할 수 있습니다.AST visitor 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)를 반환합니다.

어떻게 해결할 수 있습니까 ?? 감사합니다.

답변

1

return 유형을 찾고자하는 것처럼 들리지만 기능의 선언 된 유형은 아닙니다. 이 경우 getReturnType()을 사용하십시오.

+0

getReturnType()을 사용하려고하는데 문서에서 FunctionDecl 클래스의 클래스에이 메서드가 있다는 것을 알았지 만 컴파일러에서이 코드를 제공합니다 오류 : 'class clang :: FunctionDecl'에 'getReturnType' –

+0

당신이 옳았어요! llvm/clang 3.4를 사용하고 있기 때문에 getReturnType()은 존재하지 않지만 getResultType()은 존재합니다. 그것의 동일한 기능. –