2

这是个简单的。

(let ((x))
(if (typep x 'null) "a" "b"))

生成有关无法访问的代码删除的警告。大概编译器足够聪明,可以确定它只执行一次并且类型将始终为空。我通常不会编写该代码,但在这种情况下,我只是不希望在我的输出中出现代码删除通知。我怎样才能让 SBCL 关闭那个特定的警告?作为一个注释,我也无法找到正确的语法来告诉 sbcl 将安全设置为 0,以便我可以溢出一个整数(教育上)......也许相关?

谢谢,康拉德

4

1 回答 1

4

使用处理程序将编译代码的任何内容包装在处理程序绑定中,以处理sb-ext:compiler-note该处理程序muffle-warning。另见http://www.sbcl.org/manual/#Controlling-Verbosity

SBCL 具有模运算,因此您可以通过声明变量类型并将操作包装在(logand mask (+ x y))掩码所在的位置#xFFFF#xFFFFFFFF其他位置来获得非常快速的算法。另见http://www.sbcl.org/manual/#Modular-arithmetic

于 2010-10-14T15:57:55.420 回答