c++ - 有没有免费的 OCaml 到 C 的翻译器?

标签 c++ c ocaml

<分区>

所以我有很好的 OCaml 代码(50000 行)。我想将它移植到 C。那么有没有免费的 OCaml 到 C 转换器?

最佳答案

这可能不是您想要的,但您可以让 OCaml 编译器将其运行时代码转储到 C:

ocamlc -output-obj -o foo.c foo.ml

您得到的基本上是字节码的静态转储。结果将类似于:

#include <caml/mlvalues.h>
CAMLextern void caml_startup_code(
           code_t code, asize_t code_size,
           char *data, asize_t data_size,
           char *section_table, asize_t section_table_size,
           char **argv);
static int caml_code[] = {
0x00000054, 0x000003df, 0x00000029, 0x0000002a, 0x00000001, 0x00000000, 
/* ... */
}

static char caml_data[] = {
132, 149, 166, 190, 0, 0, 3, 153, 0, 0, 0, 118, 
/* ... */
};

static char caml_sections[] = {
132, 149, 166, 190, 0, 0, 21, 203, 0, 0, 0, 117, 
/* ... */
};

/* ... */

void caml_startup(char ** argv)
{
    caml_startup_code(caml_code, sizeof(caml_code),
                      caml_data, sizeof(caml_data),
                      caml_sections, sizeof(caml_sections),
                      argv);
}

你可以编译它

gcc -L/usr/lib/ocaml foo.c -lcamlrun -lm -lncurses

有关详细信息,请参阅 the OCaml manual .

关于c++ - 有没有免费的 OCaml 到 C 的翻译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2638664/

相关文章:

c - 当子进程执行 execvp 时,waitpid 未收到退出状态

list - 尾递归List.map

ocaml - ocaml定义函数 'a -> ' b

c++ - 如何在C++中获取集合的第一个元素

c++ - 调试 QT TimerEvent 时 GDB 崩溃

c++ - mingw:从 lambda 到函数指针的无效转换

ocaml - 让 rec 获取值,让 rec 获取 ocaml 中的函数

c++ - 是否有任何计划或现有项目将 OpenGL API 移植到 C++?

c - 为什么我的 C 程序在执行字符转换时会打印 "(null)"?

c - 限制真实(固定/浮点)值的最快方法?