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 に答える