本文描述了与 C表示SML/NJ ML编译器。 该接口提供ML数据类型 程序员用它指定C类型和C数据。 ML程序使用 这些数据类型用于向接口注册外部C函数 以及构建结构化C数据的规范。 界面 从C数据自动实例化C函数参数 国外功能应用规范。 大多数C型, 支持聚合和函数指针类型。 A类 运行时代码生成技术将ML闭包转换为C可调用 函数指针。 函数指针允许C程序调用ML 程序。 我们解决了数据差异带来的问题 表示、函数调用约定和存储管理 通过在ML和C堆之间复制数据 表示和更改过程中的调用约定。 我们 发现这种复制策略在 实践。 该接口是可移植的,因为 实现不需要更改SML/NJ编译器本身; 它被隔离在一对库(ML和C)中。 该接口具有 已经在一些非平凡的应用程序中找到了用途。