# 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()