【问题标题】:integer range error in OCamlOCaml 中的整数范围错误
【发布时间】:2013-11-08 04:16:58
【问题描述】:

最近我必须阅读一些用 OCaml 编写的源代码。在阅读了有关 OCaml 的资料后,我开始阅读源代码。当我编译源代码时,出现了问题。 编译器说错的部分如下:


让 b = [| 0x2; 0xc; 0xf0; 0xff00; 0xffff0000; 0x7ffffff00000000 |]


错误消息说这是一个整数范围问题。我知道 OCaml 中的整数范围是 -2^30 ~ 2^30 - 1 ,因此导致了这个问题。但是源代码来自其他人可以使用的项目。我怎样才能正确编译它?有人可以告诉我一些细节吗?

【问题讨论】:

  • 如果可行,您可以尝试修补源以使用Int64.t 而不是int。与int 不同,Int64.t 在机器之间的范围相同。

标签: ocaml ocamlbuild ocaml-batteries


【解决方案1】:

该代码很可能用于 64 位 OCaml 系统。

正如 gsg 建议的那样,您可以尝试将 0x2 更改为 0x2L 等等。如果幸运的话,代码中不会有太多需要更改的地方。

【讨论】:

  • 是否有一些编译选项可以让我在 32 位系统中编译它?
  • 你需要一个 64 位的 OCaml 系统。您不能让 32 位 OCaml 系统像 64 位系统一样工作。可以为您的平台构建 64 位 OCaml 系统,具体取决于它是什么。但如果还没有完成,那将是一个相当严肃的项目。
猜你喜欢
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
相关资源
最近更新 更多