Although a class macro name may be any ASCII character (any character
in the range 0x0 to 0x7f), avoid using
any of the nonletter characters.
At the very least they create confusing reading,
and at worst they may cause
to completely misinterpret
Although strings may traditionally be made to contain whitespace
by quoting them, class macros will misinterpret those quotes.
For example, "
" wrongly parses into
two class entries: "
," with the quotes
a part of each.
Duplicate strings are silently ignored. Therefore typos in a list of
strings may cause an accidentally duplicated entry to be silently excluded.
Avoid creating a new class macro name without first checking to
see whether it has already been used. That is, don't create a list
of UUCP hosts within class
without first checking
definitions and for rule-set uses of
It is perfectly legal for the
expressions to exist
in rule sets without a corresponding
Beware, however, that such empty references still cause
search the string pool.
you may watch your class macro definitions
being formed by using the
debugging switch (see
Section 37.5.127, -d37.8
Under other versions of
you may only approximate
this information by using the
Section 37.5.124, -d36.9
The class macro expansion prefixes
for use only in the LHS of rules. If you use those characters
in the RHS of rules, most versions of
do not print an error;
instead, they silently accept those characters as is.
, on the other hand, prints one of the following
messages as a warning and ignores the entire rule:
Inappropriate use of $=
Inappropriate use of $~
The file form's
(3) pattern can produce unexpected
results. Remember that the pattern is applied to a line, not
to a stream.
No error checking is performed during reads for the
form of the class configuration command. An error
reading from a file silently causes the rest of that file's contents
to be ignored. An unreported error from a program (one that
silently returns 0 on both
success and failure) is also silently
Be careful in using defined macros in the
of class macro definitions.
Some versions of
store the macro itself
instead of the expanded value of the macro,
leading to unexpected results.
correctly stores the expanded macro value.