2010/10/30

(declaim (declaration あび))

SERIES のコードを読んでたら (declaim (declaration indefinite-extent)) みたなコードが出てきた。

CLSH の declaration によると、標準じゃないけど有効の宣言だよ、とコンパイラに教えてあげる機能らしい。

普通はこんなふうにワーニングがでる。

(defun foo ()
(declare (あび))
'foo)
; in: LAMBDA NIL
; (あび)
;
; caught WARNING:
; unrecognized declaration (あび)
;
; compilation unit finished
; caught 1 WARNING condition

次のように declaim するとワーニングが出なくなる。

(declaim (declaration あび))
(defun foo ()
(declare (あび))
'foo)

SERIES はこれと (defmacro defun ...) で、あやしげな黒魔術を展開しているみたい。

0 件のコメント: