在 LLVM 中创建 raw_ostream 对象
Creating raw_ostream object in LLVM
创建 raw_ostream 对象并将其用于打印的正确方法是什么?我阅读了各种文章,唯一能找到的例子是 (How to redirect llvm::outs() to file?)
raw_ostream *output = &outs();
利用了llvm::outs.
抱歉问这个问题,因为我不太熟悉 C++,但必须了解 LLVM 的工作原理。
llvm::raw_ostream
是一个抽象class,有两个重要的纯虚函数,由subclasses实现; write_impl()
包含将数据写入基础流的逻辑,current_pos()
return 是流中当前正在写入的位置。
llvm 提供以下输出流实现:
outs()
用于写入 stdout
errs()
用于写入 stderr
nulls()
丢弃输出(如写入 /dev/null)
raw_fd_ostream(StringRef, std::error_code)
用于写入文件描述符
raw_string_ostream(std::string)
用于写入 std::string
前 3 个流直接 return 对其流对象的引用。例如
llvm::raw_ostream &output = llvm:outs();
对于其他流,您以旧方式构造对象。例如
std::string str;
llvm::raw_string_ostream output(str);
对于打印,每个 llvm::Value*
都有一个接受 raw_ostream
对象的 print
方法。
创建 raw_ostream 对象并将其用于打印的正确方法是什么?我阅读了各种文章,唯一能找到的例子是 (How to redirect llvm::outs() to file?)
raw_ostream *output = &outs();
利用了llvm::outs.
抱歉问这个问题,因为我不太熟悉 C++,但必须了解 LLVM 的工作原理。
llvm::raw_ostream
是一个抽象class,有两个重要的纯虚函数,由subclasses实现; write_impl()
包含将数据写入基础流的逻辑,current_pos()
return 是流中当前正在写入的位置。
llvm 提供以下输出流实现:
outs()
用于写入 stdouterrs()
用于写入 stderrnulls()
丢弃输出(如写入 /dev/null)raw_fd_ostream(StringRef, std::error_code)
用于写入文件描述符raw_string_ostream(std::string)
用于写入 std::string
前 3 个流直接 return 对其流对象的引用。例如
llvm::raw_ostream &output = llvm:outs();
对于其他流,您以旧方式构造对象。例如
std::string str;
llvm::raw_string_ostream output(str);
对于打印,每个 llvm::Value*
都有一个接受 raw_ostream
对象的 print
方法。