创建 raw_ostream 对象并将其用于打印的正确方法是什么?我阅读了各种文章,我能找到的唯一示例是(如何将 llvm::outs() 重定向到文件?)
raw_ostream *output = &outs();
Run Code Online (Sandbox Code Playgroud)
它利用了 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();
Run Code Online (Sandbox Code Playgroud)
对于其他流,您以旧方式构造对象。前任
std::string str;
llvm::raw_string_ostream output(str);
Run Code Online (Sandbox Code Playgroud)
对于打印,每个llvm::Value*都有一个print接受raw_ostream对象的方法。