compiling and executing.
@code{autoload} is also effectively @code{eval-and-compile} too. It's
-recognised when compiling, so uses of such a function don't produce
+recognized when compiling, so uses of such a function don't produce
``not known to be defined'' warnings.
Most uses of @code{eval-and-compile} are fairly sophisticated.
you load the source file, rather than compiling it, @var{body} is
evaluated normally.
+@cindex compile-time constant
If you have a constant that needs some calculation to produce,
-@code{eval-when-compile} can do that done at compile-time. For
-example,
+@code{eval-when-compile} can do that at compile-time. For example,
@lisp
(defvar my-regexp
(eval-when-compile (regexp-opt '("aaa" "aba" "abb"))))
@end lisp
+@cindex macros, at compile time
If you're using another package, but only need macros from it (the
byte compiler will expand those), then @code{eval-when-compile} can be
used to load it for compiling, but not executing. For example,
The same sort of thing goes for macros or @code{defalias}es defined
locally and only for use within the file. They can be defined while
compiling, but then not needed when executing. This is good for code
-that's only a fallback for compability with other versions of Emacs.
+that's only a fallback for compatibility with other versions of Emacs.
For example.
@lisp