2017-02-26 8 views
1

나는 clang 툴을 사용하고 있으며 명시 적으로 지정되지 않은 타입을 가진 소스 코드를 생성해야합니다. 형식이 clang::QualType 인 문자열은 class std::initializer_list<int>과 같습니다. 문제는 키워드없이 유형을 얻는 것입니다.Clang 툴링. 키워드없이 타입 이름

나는 유형 (clang::Type)의 모든 상속인에게 을 시도했지만 결과는 항상 null입니다.

물론 "class", "struct"등의 모든 항목을 유형 이름이있는 문자열에서 삭제할 수 있지만 "clang way"에서이 문제를 해결하고 싶습니다.

답변

1

대답은 간단했습니다. QualType::getAsString() 대신에 QualType::getAsString (const PrintingPolicy &Policy) 만 있으면됩니다. 그래서 코드 :

PrintingPolicy pp(f_context->getLangOpts()); 
string typeName = qualType.getAsString(pp); 

PrintingPolicy의 필드를 변경하지 않고 잘 작동합니다.