4

我有这个功能可以打印出偏移图中的值:

let pretty_offsetmap_original lv fmt offsetmap =
  begin match offsetmap with
  | None ->  Format.fprintf fmt "<BOTTOM>"
  | Some off ->
    let typ = Some (typeOfLval lv)
    in
    Format.fprintf fmt "%a%a"
      pretty_lval_or_absolute lv
      (Cvalue.V_Offsetmap.pretty_typ typ) off
end

现在,我想将值放入一个字符串变量中,以便出于我的目的对其进行转换。我替换Format.fprintf fmt了,Printf.sprintf但它不起作用。编译错误:

Error: This expression has type
      Format.formatter -> Cvalue.V_Offsetmap.t -> unit
    but an expression was expected of type unit -> 'a -> string
4

2 回答 2

4

不幸的是,你是对Format.sprintf的:没有好的类型。在 Frama-C 中,该功能Pretty_utils.sfprintf将完全满足您的需求。您可能还想看看Pretty_utils.to_string.

于 2013-07-03T16:38:44.027 回答
3

似乎您需要Format.fprintfFormat.sprintfnot替换为Printf.sprintf.

于 2013-07-03T03:21:48.120 回答