compilation - "failwith"不再被允许?

标签 compilation makefile runtime ocaml

我有一个要编译的 .ml 列表,在我的 makefile 中定义,由 main/mail.ml 完成。

我有一些failwith“to do”作为这些文件中某些函数的主体。之前,我记得只有当运行时执行需要该函数时才会引发错误。

今天,我所有 .ml 的编译工作正常:.cmicmx.o 是全部生成。但是当我启动主二进制文件时,它似乎并没有首先运行 main.mllet () 中的内容,相反,它似乎首先检查所有makefile 中列表 .ml 的文件,并引发 fatal error :异常 Failure("to do") make: *** [all] Error 2 当它遇到第一个faiwith“to do”时。

我发现这种行为很奇怪,有人能告诉我这可能是什么原因吗?我的 makefilemain.ml 有问题吗?

最佳答案

failwith还是允许的!但这种情况有时也会发生在我身上。

通常问题是,您不是使功能值失败,而是使非功能值失败,这意味着failwith实际上是在模块初始化期间执行的。因此,您可能在代码中的某个地方编写了:

let f = failwith "TODO"

哪里failwith在模块初始化时执行而不是:

let f x = failwith "TODO"

哪里failwith当函数 f 时执行实际上是带有参数调用的。

关于compilation - "failwith"不再被允许?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9077305/

相关文章:

c++ - 在 C++ 中的运行时选择模板参数

c# - 在运行时加载 dll 库并在其中运行代码

c++ - Qt Creator + git checkout + 完全重新编译

linux - Bash:无法在 Linux 上启动使用 make 创建的程序

android - __Atomic导致的NDK编译错误,使用RefBase或IBinder时

objective-c - 发送给对象的 className 和 isKindOfClass 消息

java - Titanium Mobile 是否将 Javascript 转换为 native Java 或 Objective C 编译代码?

c++ - 使用 2 个参数创建 auto_ptr

compiler-construction - 如何在 Sublime Text 2 中编译和运行 C 程序?

variables - 从 Make Variables 中删除值