% Macro WITH-COMPILATION-UNIT
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)))
(compile-files "A" "B" "C")
しかし、もし実装がどのような警告についても
通常みられるような遅延をしないときは、
with-compilation-unit
は何の効果も持たないことを注意して下さい。
なし。
なし。
なし。