raw_ostream为LLVM内部封装的输入输出流。不仅支持标准的输入输出流,还可以支持文件以及string的输入输出流,常常用于内部打印等其他操作。
write_impl()raw_ostream重要实现,为它保存将数据写入底层流的逻辑,并current_pos()返回当前写入流中的位置。
llvm提供的raw_ostream形式支持:
-
outs()用于写入标准输出
-
errs()用于写入标准错误
-
nulls()丢弃输出(如写入/dev/null)
-
raw_fd_ostream(StringRef, std::error_code) 用于写入文件描述符
-
raw_string_ostream(std::string)用于写入std::string
前三个是标准输入输入流,直接返回对齐流对象引用:
llvm::raw_ostream &output = llvm:outs();
以官方提供的hello pass 为例子,说明errs()打印使用方式:
bool runOnFunction(Function &F) overri