Macro WITH-COMPILATION-UNIT
with-compilation-unit
(
[[
option ]]
)
form* => result*
option::= :override override
override - generalized-boolean。評価されます。 デフォルトはnil
。
form - 暗黙のprogn
result - formの返却値
formを左から右に評価します。 with-compilation-unit
の動的環境内では、 コンパイラーがコンパイルの終了まで延期した動作は、 with-compilation-unit
の一番外側の呼び出しが 終了するまで延期されます。
optionの集合は実装によって拡張されることが許されますが、 しかしキーワード:override
のみが標準のものになります。
もし動的にネストされたとき、 最も外側で呼び出されたwith-compilation-unit
のみが 関連付けられた:override
の値がtrueではないときに限り、 何らかの効果を持ちます。 overrideがtrueである場合においては、 最も内側にあるoverrideがtrueのものが終了した時点まで 警告が遅延されます。
関数compile-file
は、 次のような効果を提供します。
with-compilation-unit (:override nil) ...) (
コンパイルされるコードが上記のものに囲まれます。
実装依存の拡張は ただ実装依存なキーワードの使用によって プログラマーが明示的に要求した結果としてのみ提供することができます。 実装者はこのマクロの使用方法として、 キーワードを全て削除するか、 あるいはちょうど:override
のキーワードに対して 追加の意味を割り当てることが許されていません。
もし実装が通常特定の種類の警告、 例えばundefined-function
についての警告を コンパイル単位(例えばファイル単位)の終端まで延期したいとき、 次の例ではどのようにしてこれらの警告を いくつかのファイルにおいてコンパイルの終端まで 遅延させるかについて示します。
defun compile-files (&rest files)
(with-compilation-unit ()
(mapcar #'(lambda (file) (compile-file file)) files)))
(
"A" "B" "C") (compile-files
しかし、もし実装がどのような警告についても 通常みられるような遅延をしないときは、 with-compilation-unit
は何の効果も持たないことを注意して下さい。
なし。
なし。
なし。