That's a general facility of Common Lisp, not only SBCL.
There is a variable cl:*features*
which lists symbols for 'features' which should be present in the Lisp system currently. Typical features are: endian, implementation, subsystems, processor, extensions, Lisp dialect and more.
In a Lisp file the expression #+quicklisp(foo)
means: read and execute (foo)
only if the feature quicklisp
is present in the list of features *features*
.
In a Lisp file the expression #-quicklisp(foo)
means: read and execute (foo)
only if the feature quicklisp
is NOT present in the list of features *features*
.
This facility is often used to hide or show implementation specific code to some other Common Lisp implementation.
See the documentation:
A typical extension is the feature-case reader macro.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…