Common Lisp:删除无法访问的代码

时间:2010-10-13 22:52:23

标签: common-lisp sbcl declare

这很简单。

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

生成有关无法访问的代码删除的警告。据推测,编译器足够智能,可以确定它只执行一次,类型将始终为null。我通常不会编写该代码,但在这种情况下,我只是不想在输出中删除代码。如何关闭SBCL关于该特定警告?作为一个注释,我也无法找到正确的语法告诉sbcl将安全性设置为0,以便我可以溢出整数(教育上)......也许相关?

谢谢,    康拉德

1 个答案:

答案 0 :(得分: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