Previous: , Up: Emacs Lisp関数にたいするアドバイス   [Contents][Index]


13.12.5 アドバイスとバイトコード

すべての関数にたいして信頼性をもってアドバイスできる訳ではありません。バイトコンパイラーが関数の呼び出しを、あなたが変更したい関数を呼び出さない命令シーケンスに置き換えることを選択するかもしれないからです。

これは通常は以下の3つのメカニズムのいずれかのために発生します:

byte-compileプロパティ

ある関数のシンボルにbyte-compileプロパティがあると、シンボルの関数定義のかわりにそのプロパティが使用される。バイトコンパイル関数を参照のこと。

byte-optimizeプロパティ

ある関数のシンボルにbyte-optimizeプロパティがあると、バイトコンパイラーが関数の引数を書き換えたり、まったく別の関数の使用を決断するかもしれない。

declareフォームcompiler-macro

関数は定義内に特別なdeclareフォームであるcompiler-macroをもつことができる(declareフォームを参照)。これは関数のコンパイル時に呼び出すexpanderを定義する。その場合にはexpanderが元の関数を呼び出さないバイトコードを生成するかもしれない。