没有INITVALUE的defvar

时间:2013-09-29 18:13:13

标签: emacs elisp

Warning Tips - GNU Emacs Lisp Reference Manual中的第一个提示:

  

尝试通过为这些变量添加虚拟defvar定义来避免编译器有关未定义自由变量的警告,如下所示:             (defvar foo)   除了告诉编译器不要在此文件中警告变量foo的使用外,这样的定义没有任何效果。

什么情况下有人想要没有效果,但又想要禁用有关自由变量的警告?每当我收到关于未定义的自由变量的警告时,我总是忘记放置(defvar foo initvalue docstring)或者拼错了本地变量名。

1 个答案:

答案 0 :(得分:3)

您的问题是为何/何时禁止此类警告。答案是:在以下任何一种情况下:

  • 变量在别处定义,你知道定义它的库将在代码实际尝试使用变量之前加载。

  • 你想声明变量是一个“特殊”变量,也就是说,它是动态绑定的,而不是词法上的。