A preprocessing directive of the form
(that does not match the previous form) is permitted
. The preprocessing tokens after
embed in the directive are processed
just as in normal text (i.e., each identifier currently defined as a macro
name is replaced by its replacement list of preprocessing tokens)
. Then, an attempt is made to form a
preprocessing token (
[lex.header]) from the whitespace and the characters
of the spellings of the resulting sequence of preprocessing tokens immediately after
embed;
the treatment of whitespace
is
implementation-defined
. If the attempt succeeds, the directive with the so-formed
is processed as specified for the previous form
. Otherwise, the program is ill-formed
.
Any further processing as in normal text described for the previous
form is not performed
. [
Note 3:
That is, processing as in normal text happens once and only once for the entire
directive
. —
end note]
[
Example 4:
If the directive matches the second form, the whole directive is replaced
. If the directive matches the first form, everything after the name is replaced
. #define EMPTY
#define X myfile
#define Y rsc
#define Z 42
#embed <myfile.rsc> prefix(Z)
#embed EMPTY <X.Y> prefix(Z)
is equivalent to:
#embed <myfile.rsc> prefix(42)
#embed <myfile.rsc> prefix(42)
—
end example]