The diagnostic directives are used to explicitly generate error and warning messages that are reported in the same way as other compile-time errors and warnings. pp-diagnostic :: whitespace#whitespaceerrorpp-messagewhitespace#whitespacewarningpp-messagepp-message :: new-linewhitespaceinput-charactersnew-line [Example: The example always produces a warning ("Code review needed before check-in"), and produces a compile-time error if the pre-processing identifiers Debug and Retail are both defined. Note that a pp-message can contain arbitrary text; specifically, it need not contain well-formed tokens, as shown by the single quote in the word can't. end example]