【问题标题】:Common Lisp: deleting unreachable codeCommon Lisp:删除无法访问的代码
【发布时间】:2010-10-13 22:52:22
【问题描述】:

这很简单。

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

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

谢谢, 康拉德

【问题讨论】:

  • 您已经尝试(declare (optimize (safety 0))) 解决您的问题的允许溢出部分?

标签: common-lisp sbcl declare


【解决方案1】:

使用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

【讨论】:

    猜你喜欢
    • 2013-12-03
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    相关资源
    最近更新 更多