# Method cpp()

Method cpp

  ``string` cpp(`string` `data`, `mapping`|`string`|`void` `current_file`, `int`|`string`|`void` `charset`, `object`|`void` `handler`, `void`|`int` `compat_major`, `void`|`int` `compat_minor`, `void`|`int` `picky_cpp`)`

Description

  Run a string through the preprocessor.

  Preprocesses the string `data` with Pike's builtin ANSI-C look-alike preprocessor. If the `current_file` argument has not been specified, it will default to `"-"`. `charset` defaults to `"ISO-10646"`.

  If the second argument is a mapping, no other arguments may follow. Instead, they have to be given as members of the mapping (if wanted). The following members are recognized:

  ``"current_file"` : `string`` | Name of the current file. It is used for generating #line directives and for locating include files.
  ``"charset"` : `int`|`string`` | Charset to use when processing `data`.
  ``"handler"` : `object`` | Compilation handler.
  ``"compat_major"` : `int`` | Sets the major pike version used for compat handling.
  ``"compat_minor"` : `int`` | Sets the minor pike version used for compat handling.
  ``"picky_cpp"` : `int`` | Generate more warnings.
  ``"keep_comments"` : `int`` | This option keeps cpp() from removing comments. Useful in combination with the prefix feature below.
  ``"prefix"` : `string`` | If a prefix is given, only prefixed directives will be processed. For example, if the prefix is `"foo"`, then `#foo_ifdef COND` and `foo___LINE__` would be processed, `#ifdef COND` and `__LINE__` would not.

See also

  compile()