首页 > 解决方案 > 如何在 C 中识别 OCaml 可扩展变体类型值?

问题描述

我有一个 OCaml 库,想在 C 中使用它。这个库有一个基于可扩展变体的错误管理系统。第 20 章 C 与 OCaml 的接口包含如何识别 C 中的变体类型值的描述(它取决于构造函数的顺序)。

以下示例说明了将整数和块标记分配给构造函数:

type t =
  | A             (* First constant constructor -> integer "Val_int(0)" *)
  | B of string   (* First non-constant constructor -> block with tag 0 *)
  | C             (* Second constant constructor -> integer "Val_int(1)" *)
  | D of bool     (* Second non-constant constructor -> block with tag 1 *)
  | E of t * t    (* Third non-constant constructor -> block with tag 2 *)

如何在 C 中识别可扩展的变体类型值?

标签: cocamlvariant

解决方案


推荐阅读