2

これは簡単なものです。

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

到達不能コードの削除に関する警告を生成します。おそらく、コンパイラは1回だけ実行され、型は常にnullになることを理解するのに十分賢いものでした。私は通常そのコードを書くことはありませんが、この場合、出力にコード削除の通知を入れたくないだけです。その特定の警告についてSBCLをシャットダウンするにはどうすればよいですか?注意として、整数をオーバーフローできるように(教育的に)安全性を0に設定するようにsbclに指示する正しい構文を見つけることもできませんでした...おそらく関連していますか?

ありがとう、コンラッド

4

1 に答える 1

4

コードをコンパイルするものはすべてハンドラーでラップします-で処理されるハンドラーとバインドしsb-ext:compiler-noteますmuffle-warninghttp://www.sbcl.org/manual/#Controlling-Verbosityも参照してください。

(logand mask (+ x y))SBCLにはモジュラー演算があるため、変数の型を宣言し、マスクがどこにある#xFFFFかなどで演算をラップすることで、非常に高速な演算を実行できます#xFFFFFFFFhttp://www.sbcl.org/manual/#Modular-arithmeticも参照してください

于 2010-10-14T15:57:55.420 に答える