GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Advice-and-Byte-Code.html ・ emacs-doc.conao3.com

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

すべての関数を確実にアドバイズできるわけではありません。バイトコンパイラは、関数への呼び出しを、変更しようとしていた関数を呼び出さない一連の命令に置き換える場合があります。

これは通常、以下の3つのメカニズムのいずれかによって起こります。

byte-compile プロパティ

関数のシンボルに byte-compile プロパティがある場合、そのプロパティがシンボルの関数定義の代わりに使用されます。バイトコンパイル関数を参照してください。

byte-optimize プロパティ

関数のシンボルに byte-optimize プロパティがある場合、バイトコンパイラは関数の引数を書き換えたり、あるいは全く別の関数を使用することを決定したりすることがあります。

compiler-macro 宣言フォーム

関数の定義において、特殊な compiler-macro declare 形式(declare 形式 を参照)を用いることができ、これにより関数のコンパイル時に呼び出す エクスパンダー を定義できます。このエクスパンダーによって、生成されるバイトコードが元の関数を呼び出さないようにすることが可能です。