创建 raw_ostream 对象并将其用于打印的正确方法是什么?我阅读了各种文章,唯一能找到的例子是(如何将 llvm::outs() 重定向到文件?)
raw_ostream *output = &outs();
它利用了 llvm::outs。
很抱歉问这个问题,因为我对 C++ 不太熟悉,但必须了解 LLVM 的工作原理。
创建 raw_ostream 对象并将其用于打印的正确方法是什么?我阅读了各种文章,唯一能找到的例子是(如何将 llvm::outs() 重定向到文件?)
raw_ostream *output = &outs();
它利用了 llvm::outs。
很抱歉问这个问题,因为我对 C++ 不太熟悉,但必须了解 LLVM 的工作原理。
llvm::raw_ostream是一个抽象类,具有两个重要的由子类实现的纯虚函数;write_impl()它保存将数据写入底层流的逻辑,并current_pos()返回当前在流中写入的位置。
llvm 提供以下输出流实现:
outs()用于写入标准输出errs()用于写入标准错误nulls()丢弃输出(如写入/dev/null)raw_fd_ostream(StringRef, std::error_code)用于写入文件描述符raw_string_ostream(std::string)用于写入std::string前 3 个流直接返回对其流对象的引用。前任
llvm::raw_ostream &output = llvm:outs();
对于其他流,您以旧方式构造对象。前任
std::string str;
llvm::raw_string_ostream output(str);
对于打印,每个llvm::Value*都有一个print接受raw_ostream对象的方法。