Emacs Lisp 拥有一个 编译器(compiler),它可以将用 Lisp 编写的函数 转换为一种称为 字节码(byte-code) 的特殊表示形式,这种形式可以 更高效地执行。编译器会用字节码替换 Lisp 函数 定义。当调用字节码函数时,其定义 由 字节码解释器(byte-code interpreter) 求值。
由于字节编译后的代码由字节码解释器求值, 而非由机器硬件直接执行(真正的编译代码如此), 因此字节码可以在不同机器之间完全移植,无需重新编译。 但它的速度不如真正的编译代码。
一般来说,任何版本的 Emacs 都可以运行由较新版本之前
如果你永远不希望某个 Lisp 文件被编译,可以在其中
加入针对 no-byte-compile 的文件局部变量绑定,如下所示:
;; -*-no-byte-compile: t; -*-