@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 2002, 2003, 2004,
-@c 2005 Free Software Foundation, Inc.
+@c 2005, 2006 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../info/compile
@node Byte Compilation, Advising Functions, Loading, Top
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