Emacs Part 43
■ このスレッドは過去ログ倉庫に格納されています
0805名無しさん@お腹いっぱい。
2013/11/12(火) 15:59:22.67defadvice の中でそのマクロを使ってしまうとコンパイル時に展開されないためか実行時にエラーになってしまいます。
これを回避する方法はないのでしょうか?
cl を eval-when-compile で使いたいのに advice の中で使ってるせいでうまくいかない・・・
; コンパイル時のみ有効なマクロ
(eval-when-compile
(defmacro moo ()
'"moo!"))
; 関数内でマクロ使用
(defun foo ()
(moo))
; アドバイス内でマクロ使用
(defun bar ()
nil)
(defadvice bar (before ad-bar activate)
(moo))
; コンパイル後のファイルをロードして実行した結果:
; (fboundp 'moo) => nil
; (foo) => "moo!"
; (bar) => Error: void-function moo ("moo!" になってほしい)
■ このスレッドは過去ログ倉庫に格納されています