npt-japanese

% Macro WITH-COMPILATION-UNIT

UP


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ではないときに限り、 何らかの効果を持ちます。 overridetrueである場合においては、 最も内側にあるoverridetrueのものが終了した時点まで 警告が遅延されます。

関数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は何の効果も持たないことを注意して下さい。

影響

なし。

例外

なし。

参考

compile, compile-file

備考

なし。


TOP, Github