### 26.2 Directives ¶

Preprocessing directives are lines in the program that start with ‘`#`’. Whitespace is allowed before and after the ‘`#`’. The ‘`#`’ is followed by an identifier, the directive name. It specifies the operation to perform. Here are a couple of examples:

    #define LIMIT 51
      #   undef LIMIT
    # error You screwed up!

We usually refer to a directive as `#name` where name is the directive name. For example, `#define` means the directive that defines a macro.

The ‘`#`’ that begins a directive cannot come from a macro expansion. Also, the directive name is not macro expanded. Thus, if `foo` is defined as a macro expanding to `define`, that does not make `#foo` a valid preprocessing directive.

The set of valid directive names is fixed. Programs cannot define new preprocessing directives.

Some directives require arguments; these make up the rest of the directive line and must be separated from the directive name by whitespace. For example, `#define` must be followed by a macro name and the intended expansion of the macro.

A preprocessing directive cannot cover more than one line. The line can, however, be continued with backslash-newline, or by a ‘`/*…*/`’-style comment that extends past the end of the line. These will be replaced (by nothing, or by whitespace) before the directive is processed.