llvm :: Type结构的字符串表示

lur*_*her 10 c++ string llvm llvm-3.0

llvm::Type2.9和更早以前用于getDescription检索该类型的字符串表示的方法.在llvm 3.0中不再存在此方法.

我不确定这是否被弃用Type::print(raw_ostream&),但无论如何我都对这个API感到好奇.关于如何使用它的例子有哪些?我怎么能转到一个stringconst char*

特别是,我想传递Boost::Format一个现代c ++ 的字符串sprintf.

arr*_*owd 13

我想,你需要创建一个实例llvm::raw_string_ostream并将你的std :: string传递给它的construtor.现在你可以使用它llvm::raw_ostream,当你完成后只需要调用.str()以获取你的字符串.

像这样的东西:

std::string type_str;
llvm::raw_string_ostream rso(&type_str);
your_type->print(rso);
std::cout<<rso.str();
Run Code Online (Sandbox Code Playgroud)

LLVM已更改其界面,因此现在以下内容将起作用:

std::string type_str;
llvm::raw_string_ostream rso(type_str);
your_type->print(rso);
std::cout<<rso.str();
Run Code Online (Sandbox Code Playgroud)