By forward function declarations I mean what is needed when a function defined later in the file is called from a preceding one.
By circular I mean file A requires a function in file B which requires a function in file A. Something along those lines
PS. Apologies for inquiring about this again. I am sure I enquired sometime in the past and forgotten the actual question and the response to it.
Mostly they just aren’t a problem. If you write a function A that calls some function B that doesn’t exist yet, you might get a warning. It’ll say something like “B is not known to be defined”. But the key thing to remember is that it doesn’t really care about B yet, not until you actually call A. Only then will it resolve B, checking to see if it is a real function or not, and then call it or error out.
But since most people get annoyed by warnings, they would ensure that A and B are in the same file. JDRiverRun also suggests using
decare-function
. If you read the docstring for that (usingC-h f
), you‘d get a link to chapter 13.16 Telling the Compiler that a Function is Defined of the Emacs Lisp Manual which describes some of the scenarios where it is useful.