Emacs lisp手册中的文档确实有一些示例情况似乎可以回答您的问题(而不是文档字符串).
从查看Emacs源代码,eval-and-compile用于安静编译器,在编译(和评估)期间使宏/函数可用,或者在编译期间使特征/版本特定的宏/函数变体可用.
我觉得有用的一种用法是ezimage.el.在那里,根据是否在Emacs或XEmacs中编译/评估了包,以及是否存在特定功能,在if语句中eval-and-compile定义了一个语句来有条件地定义宏.通过在eval-and-compile您的内部包装该条件,您可以在编译期间启用适当的宏使用.类似的情况可以在mwheel.el.
类似地,如果要fset在编译期间定义一个函数并使其可用,则需要调用fset包装,eval-and-compile否则符号 - >函数关联在评估文件之前不可用(因为编译调用fset只是优化赋值,它实际上不执行赋值).为什么在编译期间需要这个赋值?安静编译器.注意:这只是我对elisp文档中的内容的重新措辞.
我注意到在Emacs代码中有很多用途,它只包含调用require,当你阅读文档时,这听起来很多.我不知道如何解释这些.